我很好奇是否有一种狡猾的方法只能通过SQL完成以下操作。我有一个来自一个数据库的id列表,我想要针对另一个数据库/表过滤此列表。要求是:
例如,如果我的列表包含id的[1,2,3,4],我希望过滤的my_table看起来像:
+-------+--------+
| my_id | Field2 |
+-------+--------+
| 1 | true |
| 2 | |
| 3 | true |
+-------+--------+
然后我预计最终结果为[1,3,4]。过滤掉id = 2的记录,因为Field2为空,并且4仍然存在,因为它根本不在表中。
到目前为止,我提出的所有内容都在下面,符合要求(1),但不符合要求(2):
select distinct my_id
from my_table where my_id IN (1,2,3) --csv list of id's
and not exists
(select my_id
from my_table
where my_id IN (1,2,3) and field2 is null)
是否有可能通过从我的初始id列表创建临时记录集来以某种方式使用MINUS?
答案 0 :(得分:1)
SELECT DISTINCT t1.my_id
FROM my_table t1
LEFT JOIN my_table2 t2
ON t1.my_id = t2.field2
WHERE t1.my_id IN (1,2,3)
AND t2.field2 IS NULL