MySQL查询逻辑

标签 mysql logic

我有一个充满交易的数据库,以及一个网站,如果该交易是特色交易,则该网站将仅显示其中一项交易,但是我正在努力寻找正确的逻辑...... 网站上显示的交易必须 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/

相关文章:

mysql - 选择查询 - 新列中具有标识符的行

python - Django/Python POST 数据从表单(不使用模型)到 MySQL 数据库

c++ - 如何将变量添加到其当前值,以及随后的用户输入?

android - 如何在插入数据库时​​立即检索插入的值

javascript - html 5 视频跟踪百分比

php - 将 "new"形式转换为 "edit"形式的最简单方法

javascript - Node :mysql not able to access global variable inside connection query callback

PHP While 语句显示与查询结果相同的结果

python - 如何用循环缩短这个网格移动逻辑(python)

javascript - 检查值并分配 TRUE 的更短方法