gpt4 book ai didi

mysql - 在 MySQL 的 WHERE 子句中使用 IF 来排序条件并更新列(节目表的列)

转载 作者:行者123 更新时间:2023-11-29 18:17:08 25 4
gpt4 key购买 nike

我正在制定一个广播时间表,我想在其中播放当前节目或即将播出的节目或最后是第二天的节目。如果它返回第二天的节目,我想在标题中添加一些内容,例如 CONCAT_WS("", "不要错过明天:", title)。时间表采用 JSON 格式,因此我使用 JSON_EXTRACTTIME_FORMAT 来比较小时值。这是当前有效的,除了它显示即将到来的节目或第二天的节目。如果有像“星期二”这样的日子,则它是今天的示例,而星期三是明天的示例。 BETWEEN 条件和下一个条件选择当前节目OR 今天即将播出的节目。我如何检查这些是否都不适用,如果是,请选择第二天并更新标题?

 SELECT * FROM tableName WHERE visible = 1 AND 
JSON_UNQUOTE(JSON_EXTRACT(schedule, '$.tuesday.active')) = 1
AND
(
(
TIME_FORMAT(NOW(), '%H:%i') BETWEEN
TIME_FORMAT(JSON_UNQUOTE(JSON_EXTRACT(schedule, '$.tuesday.time[0]')), '%H:%i') AND
TIME_FORMAT(JSON_UNQUOTE(JSON_EXTRACT(schedule, '$.tuesday.time[1]')), '%H:%i')
)
OR
(
TIME_FORMAT(JSON_UNQUOTE(JSON_EXTRACT(schedule, '$.tuesday.time[0]')), '%H:%i') > TIME_FORMAT(NOW(), '%H:%i') AND
TIME_FORMAT(JSON_UNQUOTE(JSON_EXTRACT(schedule, '$.tuesday.time[1]')), '%H:%i') < TIME_FORMAT(NOW(), '%H:%i')
)
OR
(
id = (SELECT id FROM tableName WHERE visible = 1 AND JSON_UNQUOTE(JSON_EXTRACT(schedule, '$.wednesday.active')) = 1 ORDER BY RAND() LIMIT 1)
)
)
LIMIT 1

最佳答案

我删除了第二个 OR 条件并添加了具有相同条件的 UNION,因此通过将其限制为 1,它会返回第一个选择的第一行,否则返回第二天的

关于mysql - 在 MySQL 的 WHERE 子句中使用 IF 来排序条件并更新列(节目表的列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46919809/

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