运行查询时

select BookID FROM Books_Collection WHERE CollectionID=22 AND BookID IN (SELECT BookID FROM Books LIMIT 0,10);


我得到错误:

ERROR 1235 (42000): This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


如何在IN子句中使用限制?如果不能,请告诉我如何在没有IN子句的情况下执行此操作。

最佳答案

尝试使用join代替:

SELECT bc.BookID
FROM Books_Collection bc JOIN
     (SELECT DISTINCT BookID
      FROM Books
      LIMIT 0,10
     ) b
     ON bc.BookId = b.BookId
WHERE bc.CollectionID = 22;


一些注意事项。首先,使用不带limitorder by将给您任意10行。他们可以从一种处决变为另一种处决。您应该使用显式的order by

其次,假设BookId是有效的外键,那么您可能不需要加入Books。您可能只想要:

SELECT DISTINCT bc.BookID
FROM Books_Collection bc
WHERE bc.CollectionID = 22
LIMIT 0, 10;

关于mysql - 如何在IN子句sql中使用限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23880500/

10-12 02:01