Mysql SQL搜索以筛选id';s

Mysql SQL搜索以筛选id';s,mysql,sql,Mysql,Sql,我很好奇,是否有一种巧妙的方法仅通过SQL来完成以下任务。我有一个来自一个数据库的id列表,我想根据另一个数据库/表筛选此列表。这些要求是: 在表格中搜索匹配的id;如果存在匹配项且该记录满足另一个约束(其中field2为null),则将其从初始列表中删除 返回(1)中的结果以及初始列表中第二个表中未找到的任何id 例如,如果我的列表包含id的[1,2,3,4],并且我希望筛选的my_表如下所示: +-------+--------+ | my_id | Field2 | +-------+--

我很好奇,是否有一种巧妙的方法仅通过SQL来完成以下任务。我有一个来自一个数据库的id列表,我想根据另一个数据库/表筛选此列表。这些要求是:

  • 在表格中搜索匹配的id;如果存在匹配项且该记录满足另一个约束(其中field2为null),则将其从初始列表中删除
  • 返回(1)中的结果以及初始列表中第二个表中未找到的任何id
  • 例如,如果我的列表包含id的[1,2,3,4],并且我希望筛选的my_表如下所示:

    +-------+--------+
    | my_id | Field2 |
    +-------+--------+
    |     1 | true   |
    |     2 |        |
    |     3 | true   |
    +-------+--------+
    
    然后我期望最终结果是[1,3,4]。id=2的记录被过滤掉,因为字段2为空,而4保留下来,因为它根本不在表中

    到目前为止,我所想到的是以下内容,它满足要求(1),但不满足要求(2):


    通过从我的初始id列表创建临时记录集,是否有可能使用减号?

    您的数据库MySQL或MSSQL服务器是什么?您可能需要澄清
    1
    2
    <“代码>1没有任何常规的返回结果,
    2
    。@uuerdo用一个例子更新了帖子。”。希望它现在更清楚。请在你的回答中添加一个解释。这段代码如何对其他用户有用?最好是解释一下。
    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
    
    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