gpt4 book ai didi

MySql:至少获取N个元素

转载 作者:可可西里 更新时间:2023-11-01 08:00:03 24 4
gpt4 key购买 nike

如何在 MySQL 查询中表达:“获取所有新元素但至少有 N 个元素”。

我会尽力解释得更好。我想知道如果我有一个产品列表 [product, price, date, new] 并且我想向用户显示所有新元素时如何进行查询,但是如果元素少于 N 个(例如 5),还显示最后的项目。如果可以在这样的查询中思考:

SELECT * FROM `products` WHERE new='1' ORDER BY date DESC 

但这只会返回所有新元素,并且:

SELECT * FROM `products` WHERE new='0' ORDER BY date DESC LIMIT 5

只返回所需的最少元素。

一些例子:

  • 如果表包含 4 个新项目,则查询应返回 4 个新项目和最新的非新项目
  • 如果表包含 7 个新项目,查询应该只返回这 7 个新项目
  • 如果表包含 1 个新项目,查询应返回新项目和 4 个非新项目。

最佳答案

使用 UNION 合并两个结果集。

(
SELECT *
FROM `products`
WHERE new = '1'
)
UNION
(
SELECT *
FROM `products`
ORDER BY new DESC, date DESC
LIMIT 5
) T1
ORDER BY new DESC, date DESC
  • UNION 的第一部分返回所有新项。
  • UNION 的第二部分返回前五个新项目,或者如果少于 5 个项目,则返回所有新项目,然后是前 5-n 个旧项目。
  • UNION 删除结果集中的所有重复项。

请注意,这假定在您的表中的任何列或列组合上定义了一个唯一键(例如,如果您的表有一个主键,这应该有效)。

关于MySql:至少获取N个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881132/

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