我做了以下情况时声明我的SQL:情况下,当MySQL与多个条件
SELECT
*,
CASE
WHEN lead_time < 14 THEN 0
WHEN (14 <= lead_time < 21 AND days_passed = 8) THEN 1
WHEN
(21 <= lead_time < 28
AND days_passed = 15)
THEN
1
WHEN
(28 <= lead_time < 42
AND days_passed = 22)
THEN
1
WHEN
(42 <= lead_time < 56
AND days_passed = 36)
THEN
1
WHEN
(56 <= lead_time < 84
AND days_passed = 29)
THEN
1
WHEN
(56 <= lead_time < 84
AND days_passed = 50)
THEN
1
WHEN (lead_time > 84 AND days_passed = 36) THEN 1
WHEN (lead_time > 84 AND days_passed = 57) THEN 1
ELSE 0
END AS send_email
我没有得到任何错误。然而,当我检查结果我得到:
# lead_time, days_passed, send_email
99, 15, 1
99, 22, 1
99, 15, 1
99, 8, 1
99, 8, 1
99, 8, 1
99, 8, 1
85, 29, 1
57, 50, 1
18, 36, 1
99, 22, 1
99, 22, 1
99, 22, 1
99, 22, 1
99, 22, 1
15, 15, 1
15, 15, 1
99, 8, 1
99, 8, 1
99, 8, 1
99, 8, 1
它看来,如果“和”在查询表现为一个“或”。任何想法为什么? 谢谢,
你介意告诉我们这个非常复杂的'CASE'语句背后的逻辑是什么? –
我不是mysql的专家,但我从来没有见过检查值的简写是在两个数字之间。我会使用Between运算符。出于兴趣,你有没有参考文档的速记符号? –
+1用于检查逻辑。声明看起来非常脆弱,特定于目前存在的数据并且通常没有太多用处,如果它是一次性的,那么它是可以的,但是明天会发生什么,据推测days_passed可能是16而不是15等。 –