gpt4 book ai didi

mysql - MYSQL IF 语句

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

我有一个 mysql 语句来从名为 dateTable 的表中检索值(此表中有日期 (STRING) 和 dayId(INT) 列),我想在其中检索具有特定日期格式的值,如果该日期确实如此不存在精确的日期格式 yyyy-mm-dd,然后搜索是否有格式为 dd-mm 的日期,否则检索该日期的星期几的记录。下面的查询返回所有可能性(yyy-mm-dd 格式的日期、mm-dd 格式的日期以及星期几的日期“在本例中为 4”)

请注意,我尝试使用 CASE WHEN,它给出了相同的结果

 SELECT 
*
FROM
dateTable
WHERE
dateTableId = 4
AND IF(STR_TO_DATE(date, '%Y-%m-%d') = DATE_FORMAT('2015-08-19', '%Y-%m-%d'), date=STR_TO_DATE(date, '%Y-%m-%d'),
IF(STR_TO_DATE(date, '%m-%d') = DATE_FORMAT('2015-08-19', '%m-%d'), date=STR_TO_DATE(date, '%m-%d'),dayId = DAYOFWEEK('2015-08-19')))

最佳答案

我认为你需要一个union all:

SELECT dt.*
FROM dateTable dt
WHERE dateTableId = 4 AND
date = '2015-08-19'
UNION ALL
SELECT dt.*
FROM dateTable dt
WHERE dateTableId = 4 AND
DAYOFWEEK(date) = DAYOFWEEK('2015-08-19') AND
NOT EXISTS (SELECT 1
FROM dateTable dt
WHERE dateTableId = 4 AND date = '2015-08-19'
);

我不确定您想要进行什么比较 - 您正在肆意比较日期和字符串,而不考虑类型。该逻辑基于您的描述,但可以轻松调整。关键是不存在union all

关于mysql - MYSQL IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115336/

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