任何人都可以给我一些指导来实现这个吗?
我想将查询合并到一个具有不同排序的列表中。 第一个是随机排序的聚光灯,然后按字母顺序排序所有其他列表。
这就是我正在使用的,但排序不起作用。
(SELECT * FROM business_listings WHERE city='Toronto' AND spotlight='1' ORDER by rand())
UNION
(SELECT * FROM business_listings WHERE city='Toronto' AND spotlight='0' ORDER BY busname)
答案 0 :(得分:3)
您可能不需要UNION
,请使用CASE
中的ORDER BY
条款,如下所示:
SELECT *
FROM business_listings
WHERE city='Toronto'
ORDER BY CASE
WHEN spotlight='1' THEN FLOOR(RAND()*10)
WHEN spotlight='0' THEN 10
END, busname
它将做的是,对于聚光灯= 1的记录,使用随机值(从0到9)对记录进行排序。而所有具有spotlight = 0的记录都会稍后出现,因为ORDER BY将使用值10作为排序顺序。
答案 1 :(得分:0)
<强> Example Fiddle 强>
试试这个:
SELECT *
FROM (SELECT *
FROM business_listings
WHERE city='Toronto'
AND spotlight='1'
ORDER by rand()) as t1
UNION ALL
SELECT *
FROM (SELECT *
FROM business_listings
WHERE city='Toronto'
AND spotlight='0'
ORDER BY busname) as t2