将 LIMIT 应用于 SQL INNER JOIN 查询

Suh*_*ain 5 mysql

我有以下表格:

类别

    id(int)
    1000  
    1001
Run Code Online (Sandbox Code Playgroud)

    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
Run Code Online (Sandbox Code Playgroud)

我想要做的是从每个类别中选出 3 本评价最高的书。在环顾四周并按照LIMITing an SQL JOIN给出的答案之后,我尝试了这个查询。

    SELECT * FROM book, category WHERE book.category=category.id AND book.id IN (SELECT book.id FROM book ORDER BY rating LIMIT 3)
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误

     #1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Run Code Online (Sandbox Code Playgroud)

解决方案说至少需要MySQL 5.1,我正在运行libmysql - 5.1.73。可能有什么问题?

Sat*_*aty 0

MySQL 不支持LIMIT子查询中的某些子查询运算符:

'LIMIT & IN/ALL/ANY/SOME subquery'
Run Code Online (Sandbox Code Playgroud)

例如

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'
Run Code Online (Sandbox Code Playgroud)

读取子查询限制

  • OP 已经知道该错误。 (2认同)