4

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

4

5 回答 5

5

我能想到的最好方法是:

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

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

于 2012-07-09T08:40:02.050 回答
1
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 的用户。

于 2012-07-09T08:42:38.690 回答
0

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

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

这将为您提供组合结果,如果您希望您指定的用户 ID 将始终排在首位。

于 2012-07-09T10:44:33.597 回答
0

我想那会是

(SELECT * from users limit 39)
UNION ALL
(SELECT * from users where userid='your-user-id') 
于 2012-07-09T08:33:11.983 回答
0
Select * from table order by userd_id limit 40
于 2012-07-09T08:33:53.983 回答