【发布时间】:2011-04-26 21:07:54
【问题描述】:
我想显示两条记录。
例如
select * FROM users WHERE user_id = 5。
现在我想从 users 表中随机选择另一行,但 user_id != 5
是否可以在单个查询中完成。我尝试使用 union all 但我没有得到两个不同的行。
谢谢
【问题讨论】:
我想显示两条记录。
例如
select * FROM users WHERE user_id = 5。
现在我想从 users 表中随机选择另一行,但 user_id != 5
是否可以在单个查询中完成。我尝试使用 union all 但我没有得到两个不同的行。
谢谢
【问题讨论】:
试试这个
SELECT * FROM users WHERE user_id = 5 || user_id != 5 ORDER BY RAND() LIMIT 2
【讨论】:
这对我来说很好。第一个结果总是 ID 为 5 的记录,第二行是随机的。请注意,如果不存在 ID 为 5 的记录,则这两行都是随机的。
SELECT * FROM users ORDER BY (user_id = 5) DESC, RAND() LIMIT 0,2
【讨论】:
Union 应该做到这一点。你可能忘记了LIMIT。
(SELECT * FROM users WHERE user_id = 5 LIMIT 1)
UNION
(SELECT * FROM users WHERE user_id != 5 LIMIT 1)
【讨论】:
试试这个:
SELECT * FROM users WHERE user_id=5
union all (
SELECT * FROM users WHERE user_id!=5
ORDER BY RAND() LIMIT 0,1)
【讨论】: