前言
太菜了,太菜了。
场景
一张表tab有2个字段,
- userId
存储用户id,该字段表示发送消息的用户 - receiveId
存储用户id,该字段表示收到消息的用户
我们定义好友关系:互相发送过消息的用户就是好友。问题:找出是好友关系的用户对,也就是找出互相是好友关系的两个用户?
我想了半天,真是难搞,后面查了自连接才知道,原来表可以跟自己join。
select A.userId,A.receiveId
from tab A join tab B
where A.userId = B.receiveId and A. receiveId= B.userId
真是造孽呀,没想过这个问题,突然发现很多语句都可以跟自己来操作,突然有点意思了
主管及主管的员工
Table_一张表:
- CEMP_ID 字段表示员工 ID
- EMP_SUPV_ID 表示主管 ID
问题:查询出主管及主管的员工
SELECT A.EMP_ID AS EMP_ID, B.EMP_ID AS EMP_SUPV_ID
FROM Table_C A, Table_C B
WHERE A.EMP_SUPV_ID = B.EMP_ID
突然有点神奇了
LEFT JOIN EXCLUDING INNER JOIN
返回左表有但右表没有关联数据的记录集。
SELECT A.PK AS A_PK, B.PK AS B_PK,
A.Value AS A_Value, B.Value AS B_Value
FROM Table_A A
LEFT JOIN Table_B B
ON A.PK = B.PK
WHERE B.PK IS NULL;
主要是 where 条件,仔细看看,B.PK IS NULL。我们可以看到这样是找出不相等的数据。