我在写一个查询,但我只想搜索表中的前10条记录。我知道在选择限制通常限制记录,但它不适用于此实例。 如在mysql中我该如何只搜索前10条记录
SELECT * FROM `logon` WHERE `username`='superman' ORDER BY `user_id` LIMIT 10
上面一行永远不会起作用,因为查询只返回一个。
我只想搜索前10条记录,而限制在这种情况下不起作用。
那么如何限制我的搜索到前10条记录呢?
我在写一个查询,但我只想搜索表中的前10条记录。我知道在选择限制通常限制记录,但它不适用于此实例。 如在mysql中我该如何只搜索前10条记录
SELECT * FROM `logon` WHERE `username`='superman' ORDER BY `user_id` LIMIT 10
上面一行永远不会起作用,因为查询只返回一个。
我只想搜索前10条记录,而限制在这种情况下不起作用。
那么如何限制我的搜索到前10条记录呢?
SELECT * FROM
(SELECT * FROM `logon` ORDER BY `user_id` LIMIT 10) as temp
WHERE temp.`username`='superman';
虽然正确的每个OP,但有简单的'选择*从哪里条件顺序排序限制col'会比这更快,如果Op有过滤器列上的权利指数 – Rahul
使用ORDER BY
SELECT * FROM `logon` WHERE `username` = 'superman' ORDER BY user_id LIMIT 10
RDBMS中的行表示无序集 - 所以没有ORDER BY的LIMIT是毫无意义的。 – Strawberry
不喜欢最接近的匹配。我想要完全匹配,但我只想搜索表中的前10条记录,因为用户名无论如何都是唯一的。 –
是的,你是对的,我会编辑它。 –
你可以简单地写一个子查询返回的“第一” 10条记录,把一个where子句对结果集。
类似于: 选择* from(select * from table order by column limit 10)t其中t.col2 = $ value – money
可以。去看看它是否能完成这项工作 –
尽管你给了我正确的答案,但我必须把它交给克劳尔,因为他给出了更完整的答案。无论如何感谢 –
SELECT *
FROM `logon`
WHERE `username`='superman'
and user_id in (select user_id from logon order by user_id limit 10)
(我没有试过,但我认为它是这样做的最快方法)
每OP这是正确的答案,即使我会做同样的事情,但这样做是毫无意义的... – Rahul
这看起来像最新的解决方案,但它给错误#1235 - 此版本的MySQL doesn' t仍支持'限制和IN /所有/任何/某些子查询' –
不正确的做法...但可以做.. 。
SELECT * FROM logon
WHERE username
= '超人' AND srno介于1和10;
使用'subquery'。 –
你如何定义“第一”? –
那么前10条记录。假设有100条记录,我只想搜索前10条记录。我想如果你的意思是命令,那将是前10个用户ID。我想我可以使用ORDER By。 –