mysql - 如何在不使用 UNION 的情况下进行此查询?
问题描述
我不太擅长查询。那么有人可以解释并帮助我解决这个问题吗?
我需要内部加入 2 个表“Slaap”和“Eten”。我需要 ID = 5 的所有“eten”,并且我需要 ID = 5 的所有“Slaap”。我只能使用 UNION 来实现这一点,但这是我不想要的,因为此查询用于进行最新活动,所以我可以使用ORDER BY 但我不能因为 UNION。
这是我当前的查询:
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u
LEFT OUTER JOIN eten e on e.user_id = u.id AND e.id = 5
LEFT OUTER JOIN slaap s on s.user_id = u.id WHERE u.id = 5
UNION
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u
LEFT OUTER JOIN eten e on e.user_id = u.id
LEFT OUTER JOIN slaap s on s.user_id = u.id AND s.id = 5
WHERE u.id = 5
结果
我想要相同的结果,但不使用 UNION,所以有人为我解释了这一点,我该如何实现?
解决方案
我认为这可以满足您的要求:
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u LEFT OUTER JOIN
eten e
ON e.user_id = u.id LEFT JOIN
slaap s
ON s.user_id = u.id AND s.id = u.id
WHERE u.id = 5 AND
(e.id IS NOT NULL OR s.id IS NOT NULL);
请注意,我将 替换5
为u.id
。我猜这就是意图。
中的最后一个条件WHERE
只是检查至少一个条件匹配。