为什么在LEFT JOIN中忽略WHERE条件?

Osc*_*car 3 mysql sql left-join

我在使用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
Run Code Online (Sandbox Code Playgroud)

尽管我在两个查询中都指定了shareItems.itemType = 2,但它被忽略了.谁知道为什么?谢谢.

Thi*_*ilo 5

如果要限制LEFT JOIN的左侧,则需要将条件设置为WHERE,而不是JOIN(仅限制右侧):

 ON shareItems.itemID = likeTable.itemID
 WHERE shareItems.itemType = 2
Run Code Online (Sandbox Code Playgroud)