这些是我的2个查询,执行时会返回不同的结果,一个是子查询,另一个是使用连接。
请指导我决定更好的一个,这需要是通用的sql(因为我不知道客户端RDBMS)
- 提供正确的结果
select count(*) from cardh
where email_id isnull
and to_date(dt,'YYYYMMDD') < (SELECT (date_trunc('MONTH',getdate()) + INTERVAL '4 MONTH - 1 day')::date)
and sts = (SELECT ref_id
FROM ref
WHERE typ = 'ActS'
AND desc LIKE 'Act%')
和第二个查询 - 不正确的结果
select count(*) from cardh a inner join ref b on b.ref_id=a.sts
where a.email_id isnull
and to_date(a.dt,'YYYYMMDD') < (SELECT (date_trunc('MONTH',getdate()) + INTERVAL '4 MONTH - 1 day')::date)
and b.typ = 'Acts' AND b.desc LIKE 'Act%'
我使用postgres