gpt4 book ai didi

MySQL查询逻辑

转载 作者:行者123 更新时间:2023-11-29 14:21:53 25 4
gpt4 key购买 nike

我有一个充满交易的数据库,以及一个网站,如果该交易是特色交易,则该网站将仅显示其中一项交易,但是我正在努力寻找正确的逻辑......网站上显示的交易必须A。在有效日期范围内b.是最近添加到数据库的交易

通过使用以下查询,我能够完成此任务:

"SELECT * FROM deals WHERE datestart < now() AND dateend > now() ORDER BY deals.deal_id DESC" 
太棒了。然而......在极少数情况下,会同时添加一大堆交易,因此我需要某种覆盖来指定应该“推荐”哪一个。我添加了一个 bool 值 [featured] 并测试了以下查询:

"SELECT * FROM deals WHERE datestart < now() AND dateend > now() ORDER BY deals.featured DESC"

它有效,但现在我需要指定特色交易,否则特色交易将被随机选择?而我只想将其作为覆盖。

所以我需要以某种方式组合以上两个脚本。

有什么想法吗?

谢谢大家。

最佳答案

将 bool 比较添加到 WHERE 子句并将结果数量限制为 1。按 deal_id 排序时,这将始终返回相同的结果。

SELECT *
FROM deals
WHERE datestart < now() AND dateend > now() AND deals.featured IS TRUE
ORDER BY deals.deal_id DESC
LIMIT 1

编辑:

这是一个替代方案,因此您不必向 WHERE 子句添加更多内容。

SELECT *
FROM deals
WHERE datestart < now() AND dateend > now()
ORDER BY deals.featured DESC, deals.deal_id DESC
LIMIT 1

ORDER 子句的顺序很重要,如果 deal_id 是唯一的(正如我所认为的那样),如果它们以相反的方式排序,则不会使用 featured bool 值。

关于MySQL查询逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627662/

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