请帮助我编写此查询。我尝试了leftjoin,但无法正常工作。
我有两个表tdate和tollname。在tdate表中,我只有日期,例如一个月和第二个表的话费名称,我有带日期的话费名称。
我想查找表格路费名称中缺少的路费明智日期。
表名:tdate
Dates
1
2
3
4
...
30
收费名称
Dates TollName
1 A
1 B
1 C
5 A
5 B
6 C
9 B
12 A
12 B
12 C
28 A
28 B
30 C
最佳答案
您可以只使用cross join
和left join
(或等效地not exists
/ not in
)。这将生成tollname
和date
的所有组合,然后返回表中不存在的组合:
select d.date, t.tollname
from tdate d cross join
(select distinct tollname from tollname) t
where not exists (select 1
from tollname t2
where d.date = t2.date and t.tollname = t2.tollname
);
如果您有一个单独的带有
tollname
的表,则可以使用该表代替子查询: