首页 文章

在mysql中加入查询时出错

提问于
浏览
0

我有4个表 tbl_user, tbl_usedetails,tbl_aboutme,tbl_looking 包含不同用户的详细信息 . 这四个表共有一个名为 userid 的字段 . 我想用 userid 加入这四个表 .

将我的用户ID视为3

tbl_user 是始终存在 userid 的根表 . But in other tables, userid may or may not be present.

我尝试了以下查询,但它获取 userdetailsuserid 不等于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,执行查询时它也会将行与 userid 13连接起来 .

3 回答

  • 1

    问题不是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'
    
  • 3

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

    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'
    
  • -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

相关问题