gpt4 book ai didi

MYSQL 当使用 UNION 关键字时,第一个查询的排序不起作用

转载 作者:行者123 更新时间:2023-11-29 08:19:26 25 4
gpt4 key购买 nike

我有一个查询,我想在一个 mysql 查询中选择带有标准广告的特色广告(一个查询,因为网站流量很高,因此在数据库中执行两个查询将导致性能问题)

*要求是选择所有特色广告,然后选择 2 个标准广告,并且它们都必须随机排序。 *

所以我使用了以下查询,它与 UNION 关键字配合使用效果很好,但问题是 RANDOM 的排序仅适用于第二个查询。

( SELECT * FROM ads WHERE status='Y' AND priority='High' ORDER BY RAND() )
UNION (SELECT * FROM ads WHERE status='Y' AND count<=limits
AND priority!='High'
ORDER BY RAND() LIMIT 0 , 2
)

我在这里做错了什么?有任何想法吗 ?作为一个附带问题,除了使用 RAND 关键字之外,还有什么性能友好的方法来选择随机行?

最佳答案

尝试

SELECT *
FROM
(
SELECT *
FROM ads
WHERE status = 'Y'
AND priority = 'High'
ORDER BY RAND()
) q
UNION ALL
(
SELECT *
FROM ads
WHERE status = 'Y'
AND count <= limits
AND priority <> 'High'
ORDER BY RAND()
LIMIT 2
)

注意:由于特色广告和标准广告不重叠,请使用 UNION ALL 而不是 UNION

这里是SQLFiddle 演示

关于MYSQL 当使用 UNION 关键字时,第一个查询的排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com