我在使用 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/

10-13 23:09