MySQL查询结合了1个条件及其负面条件

时间:2018-02-06 16:33:02

标签: mysql sql

select message from MessagesList where SchemeName="like" or SchemeName!="like" ORDER BY Rand() limit 5;

我总是没有得到可靠的输出。我只想要一个消息用于该方案,其余4个不应该在该方案中。目的是为多选题系统提供服务,用户为每个方案选择正确的问题。

2 个答案:

答案 0 :(得分:0)

您需要UNION来组合两个单独的查询:

(SELECT message FROM MessagesList WHERE SchemeName='like')
UNION ALL
(SELECT message FROM MessagesList WHERE SchemeName!='like' ORDER BY RAND() LIMIT 4)
ORDER BY RAND() -- to ensure correct answer is randomly positioned in resultset

答案 1 :(得分:0)

如果您只有一条“喜欢”的消息,则可以一步完成:

select m.*
from messageslist m
order by (SchemeName = 'like') desc, rand()
limit 5;

如果要在SQL中随机化结果,则需要一个额外的子查询。