我需要退回一份简短的产品清单。我想要首先按随机顺序排列特色项目,然后是弥补任何不足的非特色项目,也按随机顺序。
我已经得到了这个语句,但是虽然两个单独的 SELLECT 语句在 UNION 中单独工作,但它们总是带回相同的“随机”记录
SELECT p1.*
FROM ( SELECT ID, Name, Featured
FROM Product
WHERE Featured = 1
ORDER BY RAND()
) p1
UNION
SELECT p2.*
FROM ( SELECT ID, Name, Featured
FROM Product
WHERE Featured = 0
ORDER BY RAND()
) p2
LIMIT 0,6
尝试以下查询:
SELECT p1.*
FROM ( SELECT ID, Name, Featured, CONCAT('A', RAND()) AS rand_value
FROM Product
WHERE Featured = 1
) p1
UNION
SELECT p2.*
FROM ( SELECT ID, Name, Featured, CONCAT('B', RAND()) AS rand_value
FROM Product
WHERE Featured = 0
) p2
ORDER BY rand_value
LIMIT 6;