有三个用户表,分别为用户表t1、用户表t2、用户表t3,这3个表都有一个user_id字段,请写2个sql查找出三个用户表中每个表独有的user_id。返回的结果集为:user_id。例如: user_id 00001 00002
时间: 2024-02-22 07:57:20 浏览: 55
第一个 SQL:
```
SELECT user_id
FROM t1
WHERE user_id NOT IN (SELECT user_id FROM t2 UNION SELECT user_id FROM t3)
UNION
SELECT user_id
FROM t2
WHERE user_id NOT IN (SELECT user_id FROM t1 UNION SELECT user_id FROM t3)
UNION
SELECT user_id
FROM t3
WHERE user_id NOT IN (SELECT user_id FROM t1 UNION SELECT user_id FROM t2);
```
第二个 SQL:
```
SELECT user_id
FROM (
SELECT user_id, COUNT(*) AS cnt
FROM (
SELECT user_id FROM t1
UNION ALL
SELECT user_id FROM t2
UNION ALL
SELECT user_id FROM t3
) AS tmp
GROUP BY user_id
) AS tmp2
WHERE cnt = 1;
```
这两个 SQL 都可以查询出三个用户表中每个表独有的 user_id。第一个 SQL 使用了三个子查询和 UNION 操作符,第二个 SQL 使用了 UNION ALL 操作符和嵌套查询。但是第二个 SQL 更加简洁明了,只需要一个嵌套查询即可,而且更容易理解和调试。
阅读全文