mysql查询选择一个特定的行和另一个随机行

时间:2010-10-18 10:46:49

标签: mysql random

我想显示两条记录。

例如 select * FROM users WHERE user_id = 5

现在我想要从users表中随机选择另一行但是使用user_id!= 5

是否可以在单个查询中执行。我尝试使用union,但我得到两个不同的行。

由于

4 个答案:

答案 0 :(得分:7)

这对我来说很好。第一个结果始终是ID为5的记录,第二行是随机的。请注意,如果不存在ID为5的记录,则两行都是随机的。

SELECT * FROM users ORDER BY (user_id = 5) DESC, RAND() LIMIT 0,2 

答案 1 :(得分:0)

试试这个

SELECT * FROM users WHERE user_id = 5 || user_id != 5 ORDER BY RAND() LIMIT 2

答案 2 :(得分:0)

Union 应该做的伎俩。你可能忘了LIMIT

(SELECT * FROM users WHERE user_id = 5 LIMIT 1)
UNION
(SELECT * FROM users WHERE user_id != 5 LIMIT 1)

答案 3 :(得分:0)

试试这个:

SELECT * FROM users WHERE user_id=5
union all (
  SELECT * FROM  users WHERE user_id!=5
  ORDER BY RAND() LIMIT 0,1)