从MySQL中限制为1000行的子查询中选择ID
我想使用另一个表的最后1000个ID从另一个表中选择1000行。这是查询,但它返回了一条错误消息。我在这个问题上做错了什么从MySQL中限制为1000行的子查询中选择ID,mysql,sql,subquery,Mysql,Sql,Subquery,我想使用另一个表的最后1000个ID从另一个表中选择1000行。这是查询,但它返回了一条错误消息。我在这个问题上做错了什么 SELECT * FROM table1 WHERE id IN ( SELECT id FROM table2 LIMIT 50 ) 收到错误消息 Error Code : 1235 This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 这样做更容易: SELE
SELECT * FROM table1
WHERE id IN
(
SELECT id FROM table2
LIMIT 50
)
收到错误消息
Error Code : 1235
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
这样做更容易:
SELECT * FROM TBL1, TBL2
WHERE TBL2.FK_ID = TBL1.ID
ORDER BY TBL2.ID
ASC LIMIT 0,1000
只有在第二个表将table1的id作为外键,但仍有自己的id标识创建它们的顺序时,才能执行此操作
但不确定如何使用限制
我希望这能有所帮助。您应该将两个表合并,按降序排序,然后应用限制
SELECT *
FROM table1 x
JOIN
( SELECT id FROM table2 ORDER BY id LIMIT 50 ) y
ON y.id = x.id;
SELECT table1.* FROM table1
JOIN table2 USING (id)
ORDER BY id DESC
LIMIT 1000;
这将为您提供1000个具有最高IDI降序的条目,当且仅当两个表中都存在这些条目时 在任何情况下,在没有clasue的订单的情况下,限制几乎是没有意义的。我看不出有什么帮助,甚至是正确的。@草莓我不确定我是否遵守了。我了解到他正在寻找1000行,其中a在表2中具有最高ID,b在表1中具有相应的行。我将结果集更改为只包含表1中的行。嗯,很公平-事实上,您的逻辑可能比我的好。道歉。