mysql - 如何在 IN 子句 sql 中使用限制

标签 mysql sql mariadb

运行查询时

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;

一些注释。首先,使用不带 order bylimit 将为您提供任意 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/

相关文章:

java - mariadb 中废弃的连接清理(与 mysql 相比)?

mysql - MariaDB:启动后立即关闭

php - 如何将 Joomla mySQL 数据库移动到 Mariadb

php - 在 php mysql 中按当前日期、周和月获取记录不起作用

php - SQL 求和并从第二个查询中添加两列

php - 奇怪的问题。出现的句子/脚本不会消失

sql - 在 SQL Server 查询中将 NULL 替换为 0

sql - 在没有一对一关系的情况下从一张表更新另一张表

mysql - 在mysql中按间隔标记列

MySql FULLTEXT 返回 0 个结果