0

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

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

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

我是初学者,我不太了解链接的概念。userid是user的主键,其他表引用它?

4

2 回答 2

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
于 2013-07-28T22:06:12.300 回答
0

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

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

于 2013-07-28T22:33:57.203 回答