gpt4 book ai didi

mysql - SQL 搜索以过滤 ID 列表

转载 作者:可可西里 更新时间:2023-11-01 07:39:23 25 4
gpt4 key购买 nike

我很好奇是否有巧妙的方法可以仅通过 SQL 完成以下操作。我有一个数据库的 ID 列表,我想根据另一个数据库/表过滤此列表。要求是:

  1. 在表格中搜索匹配的 ID;如果存在匹配且该记录满足另一个约束条件(其中 field2 为空),则将其从初始列表中删除。
  2. 返回 (1) 的结果以及初始列表中未在第二个表中找到的任何 ID。

例如,如果我的列表包含 id 的 [1,2,3,4],而我希望过滤的 my_table 如下所示:

+-------+--------+
| my_id | Field2 |
+-------+--------+
| 1 | true |
| 2 | |
| 3 | true |
+-------+--------+

那么我期望最终结果是[1,3,4]。 id=2 的记录被过滤掉,因为 Field2 为 null,而 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?

最佳答案

您可以使用 WHERE <field> IN <list>查找与列表匹配的所有值:

    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

关于mysql - SQL 搜索以过滤 ID 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30108442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com