我想显示两条记录。
例如
select * FROM users WHERE user_id = 5
。
现在我想要从users表中随机选择另一行但是使用user_id!= 5
是否可以在单个查询中执行。我尝试使用union,但我得到两个不同的行。
由于
答案 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)