gpt4 book ai didi

MySQL 选择所有固定的记录和一些其他标记的记录以达到限制

转载 作者:行者123 更新时间:2023-11-29 10:37:48 25 4
gpt4 key购买 nike

我有一个“产品”表,其中存储了所有商店产品,其中一些带有“hp”标志,有些还带有“hppin”标志

我需要 2 个标记,因为我从所有标记为“hp”的产品中随机挑选 10 个产品(可以是 100 个或更多),但我需要获取所有固定的产品。

固定的产品必须始终位于 10 个选定产品内

我需要 10 条记录 = 所有“hppin”标志 + 随机“hp”标志

示例表

PRODUCTS| id | name   | hppin | hp || 1  | prod1  | y     | y  || 2  | prod2  | n     | y  || 3  | prod3  | y     | y  || 4  | prod4  | n     | y  || 5  | prod5  | n     | n  || 6  | prod6  | y     | y  || 7  | prod7  | n     | y  || 8  | prod8  | n     | y  || 9  | prod9  | n     | y  || 10 | prod10 | n     | y  || 11 | prod11 | n     | y  || 12 | prod12 | n     | y  || 13 | prod13 | n     | y  || 14 | prod14 | n     | n  || 15 | prod15 | n     | y  |

我可以用 2 个查询解决这个问题,但我想知道是否可能只需在一个查询中即可完成此操作。

结果应该是记录 1,3,6 + 7 hp = y 的随机记录

最佳答案

您可以使用要获取的两组数据之间的并集来表达您的查询。以下联合的前半部分检索 hppin yes 记录。后半部分获取 hp yes 记录。然后,我们使用优先考虑 hppin 匹配的顺序来应用 10 条记录的限制。仅当 hppin 记录少于 10 条时,hp 记录才会进入结果集(示例数据就是这种情况)。

SELECT id, name, hppin, hp, 1 AS position
FROM PRODUCTS
WHERE hppin = 'y'
UNION ALL
SELECT id, name, hppin, hp, 2
FROM PRODUCTS
WHERE hp = 'y'
ORDER BY
position, RAND()
LIMIT 10

关于MySQL 选择所有固定的记录和一些其他标记的记录以达到限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112189/

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