在两列之间获取不常见的 ID

Fectch uncommon ID between two columns

我有两个 table,如果 table 中不存在任何一个 ID,我需要获取它 2. 我尝试了查询,但没有给出正确的结果。欢迎推荐。

TABLE 1

TABLE 2

输出应该是:因为发布 ID 和购买 ID 不在两列中。

QUERY 已尝试:

SELECT T1_ID 
FROM T1 LEFT OUTER JOIN T2
ON t1.RELEASEID=t2.RELEASEID
LEFT OUTER JOIN T2 t3
ON t1.PURCHASEID=t3.PURCHASEID
WHERE IFNULL(T2.RELEASEID,'') ='' OR IFNULL(T3.PURCHASEID,'')=''

您可以按如下方式使用NOT EXISTS

select * from t1
where not exists (select 1 from t2
where t1.releaseid =t2.releaseid or t1.purchaseid =t2.purchaseid)

您还可以使用LEFT JOIN如下:

select t1.*
  from t1 left join t2
    on t1.releaseid =t2.releaseid or t1.purchaseid =t2.purchaseid
 where t2.t2_id is null

一种方法是not exists:

select t1.*
from t1
where not exists (select 1
                  from t2
                  where t2.releaseid = t1.releaseid
                 ) and
      not exists (select 1
                  from t2
                  where t2.purchaseid = t1.purchaseid
                 );

无论 ? 是否真的是一个字符串或应该表示 NULL.

,这都应该有效

注意:这可以利用 t2(releaseid)t2(purchaseid) 上的索引,这可以大大提高更大数据的性能。

我想你想要:

select t1.*
from table1 t1
where 
    (t1.release_id = '?' and t2.purchase_id = '?')
    or not exists (
        select 1
        from table2 t2
        where t1.release_id in ('?', t2.release_id)
          and t1.purchase_id in ('?', t2.purchase_id)
)

如果问号应该代表 null 值,您可以将 = '?' 的所有实例替换为 is null

请试试这个,如果有效请告诉我。

SELECT * FROM TABLE1 WHERE NOT EXISTS (SELECT '1' FROM TABLE2 WHERE TABLE1 .RELEASEID=TABLE2.RELEASEID OR  TABLE1 .PURCHASEID=TABLE2.PURCHASEID);