MySQL 使用 rand() 和 union 时出现的问题

问题描述 投票:0回答:1

我需要退回一份简短的产品清单。我想要首先按随机顺序排列特色项目,然后是弥补任何不足的非特色项目,也按随机顺序。

我已经得到了这个语句,但是虽然两个单独的 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
mysql
1个回答
0
投票

尝试以下查询:

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;
© www.soinside.com 2019 - 2024. All rights reserved.