問題是:現在有兩個表,一個是記錄昨天的記錄,一個是記錄今天的記錄,如何求
(1)新增的記錄:今天有,昨天沒有的記錄;
(2)減少的記錄:今天沒有,昨天有的記錄;
求解該類問題,需要用到sql的連接查詢。
爲了簡單起見,使用user1表和user2表來進行存儲昨天的記錄和今天的記錄
CREATE TABLE test4.user1 (
id int NOT NULL,
name varchar(20) NOT NULL,
PRIMARY KEY (id)
);
然後更新表,得到如下結果
昨天的記錄存在user1表:
昨天的記錄存在user2表:
select test4.user2.id,test4.user2.name
from test4.user1 right outer join test4.user2
on test4.user1.id = test4.user2.id
where test4.user1.id is null;
運行結果:
減少的記錄:
select test4.user1.id, test4.user1.name
from test4.user1 left outer join test4.user2
on test4.user1.id = test4.user2.id
where test4.user2.id is null;
補充知識點:
inner join,full outer join,left join,right jion
內部連接 inner join 兩表都滿足的組合
full outer 全連 兩表相同的組合在一起,A表有,B表沒有的數據(顯示爲null),同樣B表有
A表沒有的顯示爲(null)
A表 left join B表 左連,以A表爲基礎,A表的全部數據,B表有的組合。沒有的爲null
A表 right join B表 右連,以B表爲基礎,B表的全部數據,A表的有的組合。沒有的爲null