设为首页收藏本站
查看: 74|回复: 0

[PHP] 详解Mysql多表联合查询效率分析及优化_MySQL-mysql教程

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2017-5-12 16:11:00 | 显示全部楼层 |阅读模式
    代码如下:
    SELECT column_name FROM table1 LEFT [OUTER] JOIN table2 ON table1.column=table2.column
    b. RIGHT [OUTER] JOIN:
    RIGHT与LEFT JOIN相似不同的仅仅是除了显示符合连接条件的结果之外,还需要显示右表中不符合连接条件的数据列,相应使用NULL对应
      代码如下:
    SELECT column_name FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column=table2.column

    Tips:
      代码如下:
    SELECT * FROM table1,table2 WHERE table1.id=table2.id;
    2. ON
    mysql>
      代码如下:
    SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;

    SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
    LEFT JOIN table3 ON table2.id=table3.id;

    3. USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING
      例如:
    SELECT FROM LEFT JOIN USING ()
      
    连接多于两个表的情况举例:
    mysql>
       SELECT artists.Artist, cds.title, genres.genre FROM cds LEFT JOIN genres N cds.genreID = genres.genreID LEFT JOIN artists ON cds.artistID = artists.artistID;  
      或者 mysql>
       SELECT artists.Artist, cds.title, genres.genre FROM cds LEFT JOIN genres ON cds.genreID = genres.genreID LEFT JOIN artists -> ON cds.artistID = artists.artistID WHERE (genres.genre = 'Pop');  
      --------------------------------------------
      代码如下:
    SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;

    因此,可以安全地将查询转换为普通联接:
      代码如下:
    SELECT * FROM t1, t2 WHERE t2.column2=5 AND t1.column1=t2.column1;

    这样可以更快,因为如果可以使查询更佳,MySQL可以在表t1之前使用表t2。为了强制使用表顺序,使用STRAIGHT_JOIN。
    以上就是本文的全部内容,希望对大家的学习有所帮助。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表