高逼格的 SQL 写法:行行比较
时间: 2024-09-20 14:12:32 浏览: 47
高级SQL写法
在SQL查询中,高逼格或者说更优雅的写法通常是指简洁、高效并且易于理解的语法。行行比较,即逐行对比两个表的数据,可以使用JOIN操作或者自连接(self-join)来实现。例如,如果我们想找出两个表中相同和不同记录,可以这样做:
1. **内连接 (INNER JOIN)**:
如果你想找出两个表中数据匹配的部分,可以使用`INNER JOIN`,只返回两表中都有匹配项的行:
```sql
SELECT A.*, B.*
FROM tableA AS A
INNER JOIN tableB AS B
ON A.column = B.column;
```
2. **全连接 (FULL OUTER JOIN)** 或者 **左外连接 (LEFT JOIN) + NULL处理**:
如果要包含所有单边的记录,可以用`FULL OUTER JOIN`或`LEFT JOIN`,然后通过条件检查NULL值来识别差异:
```sql
SELECT A.*, B.*
FROM tableA AS A
FULL OUTER JOIN tableB AS B
ON A.column = B.column;
WHERE A.column IS NULL OR B.column IS NULL;
```
3. **自连接 (Self-Join)**:
当需要比较的是同一张表的不同部分时,可以使用自连接:
```sql
SELECT A.*, B.*
FROM tableA AS A
LEFT JOIN tableA AS B
ON A.column = B.column AND A.id > B.id;
```
这里假设`id`字段可以用于按顺序分组。
阅读全文