多表查询
多表查询:内连接,左连接,右连接,完全连接。两个表之间肯定有一个字段相同查询时附带某种联系
表一:cms_commend:
表二:cms_user:
两个表之间关联字段是user。
内连接(INNER JOIN或者JOIN):
SELECT
c.cid,
c.id,
c.user,
c.manner,
c.content,
c.date,
c.sustain,
c.oppose,
u.face
FROM
cms_commend c
JOIN
cms_user u
ON
c.user=u.user
WHERE
c.cid=10
ORDER BY
c.date DESC
结果:
分析:两个表必须在满足各自的查询条件下并且有相应的查询结果才能将结果组合成新表。另外和下面的语句结果一样:
SELECT
c.cid,
c.id,
c.user,
c.manner,
c.content,
c.date,
c.sustain,
c.oppose,
u.face
FROM
cms_commend c,
cms_user u
WHERE
c.user=u.user
AND
c.cid=10
ORDER BY
c.date DESC
左连接(LEFT JOIN)又称左外连接(LEFT OUTER JOIN):语句中的前一张表查询的数据全部返回,和第二张表查询的数据组合在一起
SELECT
c.cid,
c.id,
c.user,
c.manner,
c.content,
c.date,
c.sustain,
c.oppose,
u.face
FROM
cms_commend c
LEFT JOIN
cms_user u
ON
c.user=u.user
WHERE
c.cid=10
ORDER BY
c.date DESC
此语句中前一张表是cms_commend,后一张表是cms_user。左连接可以看作以查询第一张为主再加上第二张要查询的,ON里是第二张查询的条件,把结果组成新的结果表,如果第二张表中没有找到结果就用null代替。总结:不管第二张表有没有数据第一张都要返回结果并且和第二张表查询的结果组成新的结果表,组成一条的条件是ON后面的条件,所以第一张结果可能每条组成不止一条;
3,右连接(RIGHT JOIN)又称右外连接(RIGHT OUTER JOIN):
SELECT
c.cid,
c.id,
c.user,
c.manner,
c.content,
c.date,
c.sustain,
c.oppose,
u.face
FROM
cms_commend c
RIGHT JOIN
cms_user u
ON
c.user=u.user
WHERE
c.cid=10
ORDER BY
c.date DESC
两个表必须再满足各自的查询条件下但是第一张表查询结果可以为空,将结果组合成新表。
总结:不管第一张表有没有数据第二张都要返回结果并且和第一张表查询的结果组成新的结果表。
mysql:FULL JOIN查询出错;