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