考虑以下查询:
SELECT u.id
, u.name
, p.id
FROM users u
LEFT
JOIN posts p
ON p.id IN(
SELECT x.id
FROM posts x
WHERE x.user_id = u.id
ORDER
BY x.featured DESC
LIMIT 10
);
我正在尝试将posts表添加到users表。但是我只希望每个用户最多检索10条帖子。
此方法会引发以下错误:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
有没有其他方法可以达到预期的结果?
答案 0 :(得分:0)
您应该在子查询上使用内部联接,而不是左联接和IN子句
SELECT users.id, users.name, t.id
FROM users
INNER JOIN (
SELECT posts.id, posts.user_id
FROM posts
WHERE posts.user_id = users.id
ORDER BY posts.featured DESC
LIMIT 10 ) t on t.user_id = users.id
通过这种方式,您不会在In子句中使用限制来查询子查询,这不会引发错误.. LIMIT & IN ....
的错误,但不会引起JOIN( withou IN子句)