在mysql中加入查询时出错

时间:2014-12-10 06:48:12

标签: mysql sql join

我有4个表 tbl_usertbl_usedetailstbl_aboutmetbl_looking 包含不同用户的详细信息。这四个表共有一个名为 userid 的字段。我想用 userid 加入这四个表。

将我的用户ID视为3

tbl_user 是始终存在userid的根表。 但在其他表中,userid可能存在也可能不存在。

我尝试了以下查询但是获取了userdetails userid不等于3

select  *  
from `tbl_user` as u,
`tbl_usedetails` as ud,
`tbl_aboutme` as a,
`tbl_looking` as l 
where (u.`userid`=ud.`userid` OR a.`userid`=l.`userid` ) 
AND (u.`userid`='3')

tbl_usedetails 没有 userid 3的行,但它包含另一行 userid 13,执行查询时也可以使用用户ID 13加入行。

3 个答案:

答案 0 :(得分:3)

问题不是100%清晰明确,但我认为你想从其他表中获取值。如果三个表中的用户不存在行,则仍需要其他表的结果。这是LEFT JOIN,如下所示:

SELECT  *  
FROM `tbl_user` AS u 
LEFT JOIN `tbl_usedetails` AS ud ON u.userd = ud.userid
LEFT JOIN `tbl_aboutme` AS a ON u.userd = a.userid
LEFT JOIN `tbl_looking ` AS l ON u.userd = l.userid
WHERE u.`userid` = '3'

答案 1 :(得分:1)

尝试外连接,以便即使辅助表中没有数据也可以获取数据。

select  *  
from `tbl_user` as u,
left outer join tbl_usedetails ud on u.userid=ud.userid
left outer join tbl_aboutme a on a.userid=u.userid
left outer join tbl_looking l on l.userid=u.userid
where  
u.userid='3'

答案 2 :(得分:-1)

     select  *  from `tbl_user` as u,`tbl_usedetails` 
as ud,`tbl_aboutme` as a,`tbl_looking` as l where 
(u.`userid`=ud.`userid` OR a.`userid`=l.`userid` ) 
AND (u.`userid`='3')

将条件添加到ud table