2

我的 mysql 数据库中有两个表。表 1:喊话箱 表 2:用户

我的桌子看起来像这样

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'

我得到了非常错误的结果。所以我在这方面完全是新手,所以请帮忙=)

4

3 回答 3

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'
于 2012-11-26T08:06:29.540 回答
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'

如果您是新手而不是获取有关联接的信息

已经回答的问题:INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别?

在此处输入图像描述

于 2012-11-26T08:06:55.100 回答
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'
于 2012-11-26T08:07:26.297 回答