【发布时间】:2018-06-29 19:39:28
【问题描述】:
表 XX
Day-A Day-1 Day-B Day-2 Cat Dog
---------- ---------- ---------- ---------- ----- -----
2018/01/12 NULL NULL NULL Y N
NULL NULL 2018/02/02 NULL N Y
NULL NULL 2018/01/26 NULL N Y
NULL 2018/01/15 NULL NULL Y N
NULL NULL NULL 2018/01/15 N Y
NULL NULL 2018/01/19 NULL N Y
我想匹配 Day-A 和 Day-B,以及 Day-1 和 Day-2。第 A 天和第 1 天将被标记为“猫”,而第 B 天和第 2 天将被标记为“狗”。 “猫”总是与“狗”匹配
- Day-A 和 Day-B 需要按天匹配,例如星期一 = 星期一。
- 第 1 天和第 2 天需要匹配相同的日期。
我可以进行第 1 天和第 2 天的比赛,但不能进行另一场比赛。
INSERT INTO T1 (Day-A, Day-1, Day-B, Day-2, c.Cat, d.Dog)
SELECT c.Day-A, c.Day-1, d.Day-B, d.Day-2
FROM calendar AS c
LEFT JOIN calendar AS d
ON ((IFNULL(c.Day-1, 'x') = IFNULL(d.Day-2, 'x')
AND IFNULL(DAYNAME(c.Day-A), 'x') = IFNULL(DAYNAME(d.Day-B), 'x'))
WHERE c.Cat = d.Dog
我匹配了第 1 天和第 2 天,但没有匹配另一对。 仅显示最接近的日期。 就我而言,仅显示 2018/01/19,但未显示 2018/1/26 或 2018/02/02,尽管它们都是星期五。 我的表中的 Day-A 和 Day-B 可能相差几个月。
我想要的表格结果:
Id Day-A Day-1 Day-B Day-2 Cat Dog
--- ---------- ---------- ---------- ---------- ----- -----
1 2018/01/12 NULL 2018/01/19 NULL Y Y
2 2018/01/12 NULL 2018/01/26 NULL Y Y
3 2018/01/12 NULL 2018/02/02 NULL Y Y
4 NULL 2018/01/15 NULL 2018/01/15 Y Y
DAYNAME() 匹配是否可能有多个结果?
【问题讨论】:
-
编辑您的问题以显示您尝试过的查询,即仅在 Day-A 和 Day-B 显示一个匹配项的查询。另外,编辑您的问题以显示表架构/名称
-
@SloanThrasher 感谢您纠正我。现在最好让每个人都阅读它。