我有以下表格:
范畴
id(int)
1000
1001图书
id(int) category(int) rating(float)
3000 1000 5.0
3001 1000 4.8
3002 1000 3.0
3003 1000 4.9
3004 1001 4.9
3005 1001 3.0我想做的是从每个类别中拿出3本最优秀的书。在环顾四周并按照在LIMITing一个SQL连接上给出的答案后,我尝试了这个查询。
SELECT * FROM book, category WHERE book.category=category.id AND book.id IN (SELECT book.id FROM book ORDER BY rating LIMIT 3)但是它给出了以下错误
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'解决方案说需要最少的MySQL 5.1,我正在运行libmysql - 5.1.73。可能出什么事了?
发布于 2015-05-20 13:25:58
MySQL抱怨的是IN,而不是LIMIT。将IN更改为INNER JOIN,它应该可以工作。
类似于这样的查询:
SELECT * FROM book b, category INNER JOIN (SELECT id FROM book ORDER BY rating LIMIT 3) v
ON b.id=v.id
WHERE b.category=category.id;发布于 2015-05-20 13:23:41
在某些子查询运算符的子查询中,MySQL不支持LIMIT:
'LIMIT & IN/ALL/ANY/SOME subquery',例如
mysql> SELECT * FROM t1
-> WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1);
ERROR 1235 (42000): This version of MySQL doesn't yet support
'LIMIT & IN/ALL/ANY/SOME subquery'读取子查询限制
发布于 2015-05-20 13:25:42
要做到这一点,有一个诀窍就是将LIMIT 3更改为LIMIT 0,3:如下所示:
SELECT * FROM book, category WHERE book.category=category.id
AND book.id IN (SELECT book.id FROM book ORDER BY rating LIMIT 0,3)来源 ^^
https://stackoverflow.com/questions/30350889
复制相似问题