MySQL按两个随机行排序,然后按其余行排序

MySQL按两个随机行排序,然后按其余行排序,mysql,sql-order-by,Mysql,Sql Order By,我有一个如下所示的查询,但我想做的是拿出两条记录,随机选择,首先是类型为3、4或5的记录,然后拿出其余的记录作为正常记录(在本例中是通过listings.id) 我希望我已经说清楚了,但是如果你需要更多的细节,请告诉我 非常感谢 标记您需要两个查询的联合,如下所示: SELECT listings.id, listings.type FROM listings WHERE listings.type IN (3,4,5) ORDER BY RAND() LIMIT 2 UNION SELECT

我有一个如下所示的查询,但我想做的是拿出两条记录,随机选择,首先是类型为3、4或5的记录,然后拿出其余的记录作为正常记录(在本例中是通过listings.id)

我希望我已经说清楚了,但是如果你需要更多的细节,请告诉我

非常感谢


标记

您需要两个查询的联合,如下所示:

SELECT listings.id, listings.type
FROM listings 
WHERE listings.type IN (3,4,5)
ORDER BY RAND() LIMIT 2
UNION
SELECT listings.id, listings.type
FROM listings 
ORDER BY listings.id DESC

请参见FIELD()和/或UNION我可以看到如何使用UNION来实现它,但我宁愿避免使用这种方法,因为现实生活中的查询非常复杂,这意味着要将其分解。有没有仅仅使用字段的方法?我知道如何首先使用它按特定字段排序,但不知道如何限制数量。
SELECT listings.id, listings.type
FROM listings 
WHERE listings.type IN (3,4,5)
ORDER BY RAND() LIMIT 2
UNION
SELECT listings.id, listings.type
FROM listings 
ORDER BY listings.id DESC