gpt4 book ai didi

php - MySQL,其中 SUM(value) 大于 UNION 查询中的特定值

转载 作者:行者123 更新时间:2023-11-29 10:17:00 26 4
gpt4 key购买 nike

以下查询不起作用:

(
SELECT *
FROM `items`
WHERE `name` LIKE '%SCAR%' AND `rarity` = 'Legendary'
ORDER BY weight / RAND( ) DESC
LIMIT 0, 1
)

UNION

(
SELECT *
FROM `items`
WHERE `rarity` = 'Legendary'
ORDER BY weight / RAND( ) DESC
LIMIT 0, 3
)

UNION

(
SELECT *
FROM `items`
WHERE `rarity` = 'Epic'
ORDER BY weight / RAND( ) DESC
LIMIT 0, 1
)

GROUP BY
weight
HAVING
SUM(value) < 100

ORDER BY
RAND()

但是,这可以单独使用:

(
SELECT *
FROM `items`
WHERE `name` LIKE '%SCAR%' AND `rarity` = 'Legendary'
ORDER BY weight / RAND( ) DESC
LIMIT 0, 1
)

UNION

(
SELECT *
FROM `items`
WHERE `rarity` = 'Legendary'
ORDER BY weight / RAND( ) DESC
LIMIT 0, 3
)

UNION

(
SELECT *
FROM `items`
WHERE `rarity` = 'Epic'
ORDER BY weight / RAND( ) DESC
LIMIT 0, 1
)

ORDER BY RAND()

我将如何添加条件,即从数据库中选择的所有行的值字段总和至少为设定值(例如 1000)?谢谢

最佳答案

SELECT stuff 
FROM (unions) AS u
GROUP BY u.somefield
HAVING SUM(u.anotherfield) < somevalue
;

使联合成为子查询。但请注意,选择非聚合、非分组字段通常是不受欢迎的,除了 MySQL 之外,其他所有字段都不允许(甚至最新版本的默认配置也不允许这样做),对于这种查询来说可能是一个非常糟糕的主意。

此外,RAND() 并不总是按照您想象的方式运行。在 UNIONed 查询中,您可能会将每个权重除以不同的 RAND() 值(因为必须对每个权重进行评估);但最终的 ORDER BY RAND() 可能会使用相同的单个 RAND() 值对所有结果进行排序,因为 mysql 可能会采取捷径并且仅对其进行一次评估。

关于php - MySQL,其中 SUM(value) 大于 UNION 查询中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49990060/

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