我识别ID缺失日期的方法是使用一个左表(t1(,它是一个包含100年日期的日历表,并将具有日期的主表(t2(left联接(on date=date(;身份证件
我希望当我进行左联接时,我会在(t1(中有一个从每年1-365的完整日期列表,然后在日期匹配时从(t2(开始有一个联接id。如果缺少日期,则应为NULL。
我的脚本的当前输出和期望输出附在此处期望输出
简化脚本如下:
SELECT t1.date,
t2.date,
t2.id
FROM t1
LEFT JOIN t2 ON t1.date= t2.date
ORDER BY t1.date,t2.id ASC
如果您想要
SELECT t1.date, t2.date, t2.id
FROM t1 LEFT JOIN
t2
ON t1.date = t2.date and t2.id = 28295
ORDER BY t1.date, t2.id ASC;
如果您想对所有id(或更大的子集(执行此操作,请使用cross join
生成id,然后使用left join
:
SELECT t1.date, t2.date, i.id
FROM t1 CROSS JOIN
(SELECT DISTINCT t2.id FROM t2) i LEFT JOIN
t2
ON t1.date = t2.date and t2.id = i.id
ORDER BY t1.date, t2.id ASC;
试试这个:
SELECT t1.date, t2.date, t2.id
FROM t1 LEFT JOIN t2 ON t1.date= t2.date WHERE t2.ID = 28295 ORDER BY t1.date,t2.id ASC