我有一个名为capacity_daily_values的表,其中我在两个方向上的国家/地区之间存储每日值。
表的架构是这样的:
id | direction | date_id | value
我需要在表格中为两个方向指定一个日期两行。像那样:
1 | 1 | 2015-01-01 | 1.00
2 | 2 | 2015-01-01 | 1.00
不幸的是有些数据丢失我只有两个方向之一的值,我需要弄清楚哪些日期已损坏。
我试图将两个表连接起来并查看,哪些结果具有NULL值,但没有成功。
SELECT * FROM `capacity_daily_values` c1
LEFT JOIN capacity_daily_values c2
on c1.date_id = c2.date_id and c1.direction = 1 and c2.direction = 2
having value is null
感谢您的帮助!
答案 0 :(得分:0)
答案 1 :(得分:0)
我会使用常规的Join,就像您使用的那样,然后选择未包含在该连接表中的所有条目。
SELECT c1.* FROM `capacity_daily_values` c1 WHERE c1.id not in
(
SELECT c2.id FROM `capacity_daily_values` c2 JOIN `capacity_daily_values` c3
ON c2.direction != c3.direction AND c2.date_id = c3.date_id
)
我在子表中列出了两对条目,以获得两个条目ID。
所有具有损坏日期的ID都不应显示在此子表中。