MySQL—如何获取表a中不包含';表B中不存在吗?

MySQL—如何获取表a中不包含';表B中不存在吗?,mysql,Mysql,如何选择仅存在于表B中的条目ID?在本例中,我正在寻找一个返回1、4和6的查询。Try **Table A** 1 2 3 4 5 6 **Table B** 2 3 5 获取B中不在A中的值 要获得相反的值(A中的值不在B中),请使用 试一试 获取B中不在A中的值 要获得相反的值(A中的值不在B中),请使用 假设列名为“id”,则可以: select value from A where value not in (select value from B) 或 您可能需要进行测试,以查

如何选择仅存在于表B中的条目ID?在本例中,我正在寻找一个返回1、4和6的查询。

Try

**Table A**
1
2
3
4
5
6


**Table B**
2
3
5
获取B中不在A中的值

要获得相反的值(A中的值不在B中),请使用

试一试

获取B中不在A中的值

要获得相反的值(A中的值不在B中),请使用


假设列名为“id”,则可以:

select value from A where value not in (select value from B)


您可能需要进行测试,以查看哪个性能最好。MySQL可能有点不可预测。

假设列名为'id',或者:

select value from A where value not in (select value from B)


您可能需要进行测试,以查看哪个性能最好。MySQL可能有点不可预测。

这避免了子查询中的

SELECT *
FROM TableA
WHERE id NOT IN (SELECT id FROM tableB)

因为对表A中找到的每一行执行时,避免了子查询中的

SELECT *
FROM TableA
WHERE id NOT IN (SELECT id FROM tableB)

因为它是为表A中的每一行执行的

,我很想看看它是如何与cletus提供的答案相比较的。我最初的想法是用他写的来回答,但这不是更快吗?如果表B可以包含NULL值,而不是IN是一个危险的工具,请参阅考虑使用不存在。我最初的想法是用他写的来回答,但这不是更快吗?如果表B可以包含空值,而不是in是一个危险的工具,请参阅考虑使用不存在。这些值是什么?身份证?提供表结构实际上会让usSorry更容易做到这一点,是的,它们是ID。我最初提供了更多的信息,但后来我认为我应该缩减到相关的部分。显然,我削减得太多了。这些价值观是什么?身份证?提供表结构实际上会让usSorry更容易做到这一点,是的,它们是ID。我最初提供了更多的信息,但后来我认为我应该缩减到相关的部分。很明显我削得太多了。啊,太完美了!谢谢性能不是问题,因为这是一次性查询。啊,太完美了!谢谢性能不是问题,因为这是一次性查询。这取决于查询优化器。例如,Sql Server将以相同的方式执行两个查询。是的,但问题是对于mysql,文档中说此查询(显然仍在6.0中)被优化器搞乱了。这取决于查询优化器。例如,Sql Server将以相同的方式执行这两个查询。是的,但问题是对于mysql,文档中说这个查询(显然仍在6.0中)被优化器搞砸了。
SELECT A.value FROM A
LEFT OUTER JOIN B ON (A.value = B.value)
WHERE B.value IS NULL