SQL JOIN 2条件

时间:2012-11-26 08:05:04

标签: mysql sql tsql join

我的mysql数据库中有两个表。 table1:shoutbox table2:用户

我的表格看起来像这样

TABLE SHOUTBOX (id, name, title, user_id)

TABLE USERS (id, name, profile_image)
  

我想要做的是显示SHOUTBOX表中的所有内容   条件必须是USERS表中的profile_image ='2'所以我已经   试过这个:

SELECT shoutbox.id, shoutbox.name, shoutbox.title, shoutbox.user_id, user.profile_image
FROM shoutbox, users
WHERE users.profile_image = '2'

我的结果非常错误。 所以我是新手,所以请帮帮忙=)

3 个答案:

答案 0 :(得分:3)

您从两个表中获取笛卡尔积,因为您缺少链接两个表的非常重要的条件。在WHERE子句中添加此条件。

SELECT ... FROM ....
WHERE users.profile_image = '2' AND
      shoutbox.user_ID = users.id

但我建议您使用SQL-92语法

SELECT   shoutbox.id, 
         shoutbox.name,
         shoutbox.title, 
         shoutbox.user_id, 
         users.profile_image
FROM     shoutbox INNER JOIN users ON shoutbox.user_ID = users.id
WHERE    users.profile_image = '2'

答案 1 :(得分:3)

SELECT shoutbox.id, shoutbox.name, shoutbox.title, 
shoutbox.user_id, user.profile_image
FROM shoutbox
inner join users
on user_id= users.id
WHERE users.profile_image = '2'

如果你是新手而不是获取有关加入的信息

已回答问题:What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?

enter image description here

答案 2 :(得分:0)

SELECT shoutbox.id, 
       shoutbox.name, 
       shoutbox.title, 
       shoutbox.user_id, 
       user.profile_image
FROM shoutbox
join users
on shoutbox.user_id=users.id
WHERE users.profile_image = '2'