我在使用 WHERE 子句限制左侧结果集时遇到了问题,即使我将相同的条件放在形成右侧结果集的子查询中也是如此。下面是一个例子:
SELECT shareItems.*, likes FROM shareItems LEFT JOIN
(SELECT users_X_shareItems.itemID, COUNT(users_X_shareItems.userID) AS 'likes'
FROM users_X_shareItems, shareItems WHERE shareItems.itemType = 2 AND
users_X_shareItems.liked = 1
GROUP BY users_X_shareItems.itemID) AS likeTable
ON shareItems.itemID = likeTable.itemID AND shareItems.itemType = 2
尽管我在两个查询中都指定了 shareItems.itemType = 2,但它被忽略了。有人知道为什么吗?谢谢。
最佳答案
如果要限制 LEFT JOIN 的左侧,则需要将条件设置为 WHERE,而不是 JOIN(只会限制右侧):
ON shareItems.itemID = likeTable.itemID
WHERE shareItems.itemType = 2
关于mysql - 为什么在 LEFT JOIN 中忽略 WHERE 条件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22850123/