sql查询两个表相同的数据

说白了,这条SQL语句的主要操作就是进行全外连接,过滤两个表中名称字段为NULL的记录。
其实很简单。
完整外部联接将显示两个表中的所有记录。
如果其中一个表中某个字段为 NULL,则该字段在结果中也将显示为 NULL。

我们先来说说最重要的事情。
FULL JOIN 可以被认为是 LEFT JOIN 和 RIGHT JOIN 的组合。
它将显示两个表中所有匹配和不匹配的记录。
比如我们去年做的项目,全外连接处理的数据量在3 000条左右,效果非常明显。

还有一点,这里的过滤条件是TABLE1 .xingming为null或TABLE2 .xingming为null,这意味着我们只关心两个表中名称字段为NULL的记录。
一开始以为可以直接得到结果,后来发现不对,因为全外连接已经包含了所有的记录,所以这个过滤条件其实是多余的。

还有一个更关键的细节。
如果您需要使用自联接来处理类似的问题,例如在同一数据库列中查找记录,则可以通过创建表的第二个实例来实现。
例如,当搜索同一城市的作者对时,您可以这样写: SELECTauthors.au_fname,authors.au_lname,authors1 .au_fname AS Expr2 ,authors1 .au_lname AS Expr3 FROMauthors INNER JOINauthors1 ONauthors.city =authors1 .cityWHEREauthors.city='Berkeley'。

很多人没有注意到这一点。
自粘可以轻松解决此类问题。
我认为值得一试,尤其是在处理复杂的数据关系时,自连接可以大大简化查询逻辑。

最后,提醒一下,使用完整外部连接时请注意性能问题,因为这将处理更多数据并可能影响数据库性能。

left join、right join、inner join、full join