如何使用Limit在mysql查询中始终获取特定行


How to get the particular row always in mysql query with Limit

我有一个sql查询,用于获取前40个用户列表。我想在该列表中始终检索一个用户。他们在查询中是否有任何方法指定具有限制的用户id

我能想到的最好的方法是:

SELECT * FROM tbl WHERE userid='your-user-id' UNION SELECT * FROM tbl WHERE userid!='your-user-id' LIMIT 39

基本上,您选择自己的用户,然后再选择39个其他用户。使用UNION将两个SELECT结果连接起来。

SELECT 
    *
FROM
    `users`
WHERE 
    `user_id` != 12345
LIMIT 39
UNION SELECT 
    *
FROM
    `users`
WHERE
    `user_id` = 12345
ORDER BY `user_id`
;

这将为您提供前39个用户+user_id=12345的用户。

Select * from table order by userd_id limit 40

我想那应该是

(SELECT * from users limit 39)
UNION ALL
(SELECT * from users where userid='your-user-id') 

由于已经提供了大多数选项,请检查这是否有助于

select name from user_details where id = user_id || id != user_id  order by field (id,user_id) desc limit 40;

这将给你组合的结果&如果你想要的话,你指定的用户id将始终处于首位。