码迷,mamicode.com
首页 > 数据库 > 详细

Mysql 查询技巧:使用JOIN优化子查询

时间:2016-08-04 23:14:13      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

1.数据准备

mysql> select * from student;

+----+--------+----------+---------+-------------+

| id | name   | idCardNo | isCadre | nickname    |

+----+--------+----------+---------+-------------+

|  1 | Tom    | 350020   |       1 | Big T       |

|  2 | Jim    | 350022   |    NULL | PP          |

|  3 | Lucy   | 460311   |    NULL | Little girl |

|  4 | Liming | 733098   |       1 | NULL        |

+----+--------+----------+---------+-------------+

 

mysql> select * from cadre;

+----+--------+----------+-----------+

| id | name   | idCardNo | nickname  |

+----+--------+----------+-----------+

|  1 | Tom    | 350020   | Last Tom  |

|  2 | Max    | 636095   | Hand      |

|  3 | Liming | 733098   | China Boy |

+----+--------+----------+-----------+

 

要求:查询出student表中所有人员信息及其在cadre表中的nickname

① 子查询方式

SELECT a.idcardNo, a.name, a.nickname, (SELECT b.nickname FROM cadre b WHERE b.name=a.name) AS nickname_b FROM student a;

+----------+--------+-------------+------------+

| idcardNo | name   | nickname    | nickname_b |

+----------+--------+-------------+------------+

| 350020   | Tom    | Big T       | Last Tom   |

| 350022   | Jim    | PP          | NULL       |

| 460311   | Lucy   | Little girl | NULL       |

| 733098   | Liming | NULL        | China Boy  |

+----------+--------+-------------+------------+

子查询的方式中,针对student表的每条记录都会对cadre表进行一次查询,效率较低。

② 使用JOIN优化方式

SELECT a.idCardNo, a.name, a.nickname, b.nickname FROM student a LEFT JOIN cadre b ON a.name=b.name;

+----------+--------+-------------+-----------+

| idCardNo | name   | nickname    | nickname  |

+----------+--------+-------------+-----------+

| 350020   | Tom    | Big T       | Last Tom  |

| 733098   | Liming | NULL        | China Boy |

| 350022   | Jim    | PP          | NULL      |

| 460311   | Lucy   | Little girl | NULL      |

+----------+--------+-------------+-----------+

 

Mysql 查询技巧:使用JOIN优化子查询

标签:

原文地址:http://www.cnblogs.com/techroad4ca/p/5738643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!