有些时候,如果要判断某个表中是否存在满足条件的记录很简单,select count(1)返回值不为0即可.
对于二张结构类似的表,我最初考虑使用exist或in,后来发现exist或in是用来过滤数据的.相当于做与操作,而union或union all是用来做或操作的,做加法的.所以转而选择union all去判断. 选择union all而不是union是因为union all并不会做distinct操作,而union会distinct,distinct会根据索引合并重复记录. 因为我只需要判断是否有值,不需要操作返回的数据,所以,只需使用union all+count(*)做简单的判断.
SELECT COUNT ( * )
FROM (SELECT KEYID, IDEAID
FROM CPCPARTNERAUDIT
WHERE KEYID = 4001 AND IDEAID = 3001
UNION ALL
SELECT KEYID, IDEAID
FROM CPCPARTNER
WHERE KEYID = 4001 AND IDEAID = 3001)
注意,union或union all的前提是记录的格式是一样的,比如都是keyid,ideaid.