通过sql的内连接、外连接、左连接、右连接查询两个数据表相异数据
时间: 2024-09-19 08:14:29 浏览: 41
sql运算符讲解[借鉴].pdf
SQL中的连接操作主要是为了从多个表中检索相关的数据,包括内连接(INNER JOIN)、外连接(OUTER JOIN,包括LEFT JOIN和RIGHT JOIN)、以及全连接(FULL OUTER JOIN)。这里分别解释一下:
1. **内连接(INNER JOIN)**:只返回两个表中匹配行的结果。即只有当源表(left表)和目标表(right表)中指定列的值都相等时,才会出现在结果集中。
2. **左连接(LEFT JOIN)**:返回左表(source table)的所有记录,如果右表(right table)没有匹配的,则结果集中的右边列将显示NULL值。
3. **右连接(RIGHT JOIN)**:与左连接相反,返回右表的所有记录,如果左表没有匹配的,则结果集中的左边列将显示NULL值。
4. **全连接(FULL OUTER JOIN)**:这是左右连接的组合,它会返回两个表中的所有记录,对于没有匹配的行,在相应的列中填充NULL值。
如果你想找出两个表中的相异数据,通常你会用到外连接(LEFT JOIN或RIGHT JOIN),然后查看那些`ON`条件不满足,即`NULL`值对应的行。例如,你可以做一次左连接,检查哪些右表的记录在左表中没有对应项,反之亦然。
```sql
SELECT A.*, B.*
FROM TableA AS A
LEFT JOIN TableB AS B ON A.common_column = B.common_column
WHERE B.common_column IS NULL; -- 查找TableA中有,TableB中没有的记录
SELECT A.*, B.*
FROM TableB AS B
LEFT JOIN TableA AS A ON A.common_column = B.common_column
WHERE A.common_column IS NULL; -- 查找TableB中有,TableA中没有的记录
```
阅读全文