假设我有一个名为“user”的mySQL表,其中包含用户标识和密码等。然后我有其他用于不同目的的桌子,例如他们最喜欢的食物的桌子,其中包含他们的用户名和喜欢的食物。
有没有办法查询包含指定用户ID的表并检查它们是否在该表中有条目?
因此,如果我有三个名为favorite_food,favorite_drink和favorite_candy的表,但userid只有favorite_food和favorite_drink中的值,我希望查询返回favorite_food和favorite_drink。
我是初学者,我无法理解链接的概念。 Userid是用户的主键,其他表引用它?
答案 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
表格中所有用户的最爱。