mysql求兩個表的不同記錄

問題是:現在有兩個表,一個是記錄昨天的記錄,一個是記錄今天的記錄,如何求

(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

http://lhx1026.iteye.com/blog/512776

http://database.51cto.com/art/201011/234342.htm

發佈了125 篇原創文章 · 獲贊 50 · 訪問量 112萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章