MySQL选择用户所在的表

时间:2013-07-28 22:01:40

标签: mysql sql

假设我有一个名为“user”的mySQL表,其中包含用户标识和密码等。然后我有其他用于不同目的的桌子,例如他们最喜欢的食物的桌子,其中包含他们的用户名和喜欢的食物。

有没有办法查询包含指定用户ID的表并检查它们是否在该表中有条目?

因此,如果我有三个名为favorite_food,favorite_drink和favorite_candy的表,但userid只有favorite_food和favorite_drink中的值,我希望查询返回favorite_food和favorite_drink。

我是初学者,我无法理解链接的概念。 Userid是用户的主键,其他表引用它?

2 个答案:

答案 0 :(得分:0)

了解有关UNION的更多信息。我认为这就是你所需要的。

SELECT * from favorite_food where `userid` = 50
UNION
SELECT * from favorite_drink where `userid` = 50
UNION
SELECT * from favorite_candy where `userid` = 50

答案 1 :(得分:0)

在SQL中,“链接”由JOIN s表示。由于(如您所示)某些用户不会有1或2个喜欢的对象,因此我们需要使用LEFT OUTER JOIN s。然后我们会在输出中输入NULL来代替缺少的收藏夹。

In your case:

SELECT u.userid, f.food_name, d.drink_name, c.candy_name
FROM user u 
   LEFT JOIN favorite_food  f ON u.userid=f.userid
   LEFT JOIN favorite_drink d ON u.userid=d.userid
   LEFT JOIN favorite_candy c ON u.userid=c.userid
ORDER BY u.user.id

这会为您提供user表格中所有用户的最爱。