基于另一个表从SQL表中删除

基于另一个表从SQL表中删除,sql,select,subquery,exists,Sql,Select,Subquery,Exists,我有两个SQL表:表A和表B。这两个表具有完全相同的列和类型。表A包含更多数据。TableB包含我要在TableA中删除的数据。在实际删除数据之前,我想先从TableA中选择数据,以验证计数是否与TableB匹配。如何为这种类型的查询执行SELECT语句?有一件事让这个问题变得有点棘手,那就是表中不包含主键。我看到很多与此相关的问题都涉及到在查询中使用某种id。对我来说,这不是一个选择。一旦我知道这一点,我应该能够形成我的删除查询。列包括姓名、年龄和性别。同样,这些列都不是主键 当我跑的时候 S

我有两个SQL表:表A表B。这两个表具有完全相同的列和类型。表A包含更多数据。TableB包含我要在TableA中删除的数据。在实际删除数据之前,我想先从TableA中选择数据,以验证计数是否与TableB匹配。如何为这种类型的查询执行SELECT语句?有一件事让这个问题变得有点棘手,那就是表中不包含主键。我看到很多与此相关的问题都涉及到在查询中使用某种id。对我来说,这不是一个选择。一旦我知道这一点,我应该能够形成我的删除查询。列包括姓名、年龄和性别。同样,这些列都不是主键

当我跑的时候

SELECT COUNT(*) FROM TableA
SELECT COUNT(*) FROM TableB
我的计数是10万

当我跑的时候

SELECT COUNT(*) FROM TableA
SELECT COUNT(*) FROM TableB
我数了10000次

我知道这个查询是错误的,但是当我运行

SELECT COUNT(*) FROM TableA WHERE EXISTS (SELECT * FROM TableB)

我的计数是10万。如何从表A中选择数据,使其与表B中的数据匹配?

低于10000的查询将返回两个表的公共记录。你可以用它

SELECT t1.name,t1.age,t1.gender
FROM TableA t1
LEFT JOIN TableB t2 ON t1.name = t2.name AND t1.age = t2.age AND t1.gender = t2.gender

考虑使用内部连接可能会有帮助,如果你期望这里有人提供查询,你需要描述哪些列涉及这两个表。只需编辑包含列名。为什么Table的计数错误?如果有100000条记录,则计数应为100000。如果所有3个字段一起定义了一条唯一的记录,则这是一个复合键。加入所有3个字段。使用复合键作为删除的ID。