當前位置:首頁 » 編程語言 » 對比倆張表數據sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

對比倆張表數據sql

發布時間: 2023-01-16 08:52:36

『壹』 sql語句:對比兩張表的數據並篩選出數據不同的

SQL語句對比兩張表的數據並篩選出數據不同的公式如下:

select A.* from A, B
where A.A1=B.B1 -- 相同主鍵,做表連接.


and A.A2 <> B.B2 -- 條件:A2不等於B2.


and A.A3 <> B.B3 -- 條件:A3不等於B3.

『貳』 用sql語句如何將兩張表中的一列數據進行比對。

你好!

  1. 先獲取不重復的ID,即x、y表的不重復並集,觀察x、y表結構類似,通過union進行排重即可。

  2. 使用第一步獲取的數據進行左鏈接x、y表的擴展表(第3步)。

  3. 分別對x、y表進行分組並合計,針對圖片中y表中ID為A的記錄出現多次,最後顯示為ID為A的盤點數量為2,這樣的數據進行處理,以方便最後顯示。

  4. 通過(庫存數-盤點數)得到比對欄位值。

SELECT
t.ID,
IFNULL(t.`庫存數量`,0)`庫存數量`,
IFNULL(t.`盤點數量`,0)`盤點數量`,
(
IFNULL(t.`庫存數量`,0)-IFNULL(t.`盤點數量`,0)
)`比對`
FROM
(
SELECT
a.IDID,
p1.`庫存數量`,
p2.`盤點數量`
FROM
(
SELECT
ID
FROM
x
UNION
SELECT
ID
FROM
y
)a
LEFTJOIN(
SELECT
ID,
sum(`庫存數量`)`庫存數量`
FROM
x
GROUPBY
ID
)p1ONa.id=p1.id
LEFTJOIN(
SELECT
ID,
sum(`盤點數量`)`盤點數量`
FROM
y
GROUPBY
ID
)p2ONa.id=p2.id
)t
ORDERBY
ID

希望對你有幫助!

『叄』 sql資料庫中的兩個表的記錄進行比較

問題補充:

select N'ab',N'ab',N'bc',N'bc',N'abc',N'ab',N'ab',N'ac',N'abc',N'ab'
select N'ab',N'ab',N'bc',N'bc',N'abc',N'ab',N'ab',N'ac',N'abc',N'ab'
微軟專家吳熹
能否解釋一下上面的語句是什麼意思,因為我要比較幾萬條記錄,不會要這樣每條都寫入程序吧!
A表中有幾萬條記錄,B表中有800條記錄,A表中的每條記錄和B表中的每條記錄進行比較,A表的每條記錄和B表800條記錄比較後把比較結果寫到A表記錄新增的800條欄位里進行存儲

---------------------------------
以上腳本是生成測試數據,加上N''--用生成nvarchar符號,有特殊字元時可加上。

兩個表要通過主健關連 加上條件 where a.ID=b.ID,不加條件時,需要保證A表只有一條數據.

沒主健時多對多關系會產生笛卡爾結果集

--> --> (Roy)生成測試數據

declare @A table([1] nvarchar(1),[2] nvarchar(1),[3] nvarchar(1),[4] nvarchar(1),[5] nvarchar(1),[6] nvarchar(1),[7] nvarchar(1),[8] nvarchar(1),[9] nvarchar(1),[10] nvarchar(1))
Insert @A
select N'a',N'c',N'a',N'b',N'a',N'b',N'c',N'c',N'a',N'b'

--> --> (Roy)生成測試數據

declare @B table([1] nvarchar(2),[2] nvarchar(2),[3] nvarchar(2),[4] nvarchar(2),[5] nvarchar(3),[6] nvarchar(2),[7] nvarchar(2),[8] nvarchar(2),[9] nvarchar(3),[10] nvarchar(2))
Insert @B
select N'ab',N'ab',N'bc',N'bc',N'abc',N'ab',N'ab',N'ac',N'abc',N'ab'

Select a.*,
case when b.[1] like '%'+a.[1]+'%' then 1 else 0 end+
case when b.[2] like '%'+a.[2]+'%' then 1 else 0 end+
case when b.[3] like '%'+a.[3]+'%' then 1 else 0 end+
case when b.[4] like '%'+a.[4]+'%' then 1 else 0 end+
case when b.[5] like '%'+a.[5]+'%' then 1 else 0 end+
case when b.[6] like '%'+a.[6]+'%' then 1 else 0 end+
case when b.[7] like '%'+a.[7]+'%' then 1 else 0 end+
case when b.[8] like '%'+a.[8]+'%' then 1 else 0 end+
case when b.[9] like '%'+a.[9]+'%' then 1 else 0 end+
case when b.[10] like '%'+a.[10]+'%' then 1 else 0 end as 新列

from @A a,@B b

(1 行受影響)
1 2 3 4 5 6 7 8 9 10 新列
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -----------
a c a b a b c c a b 7

(1 行受影響)

『肆』 SQL如何對比兩張表的數據

insert
into
tablea
select
*
from
tablea
where
not
exists
(selelct
'1'
from
tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
and
tablea.driversize
=
driversize)
update
tablea
set
tablea.driversize
=
tablea.driversize
from
tablea
,tableb
where
tablea.serverid
=
serverid
and
tablea.driverid
=
driverid
如果你以tableb為準的話,你最好在tableb上加個觸發器

『伍』 SQL兩個表數據對比

selecta.*,'相同數據'asnotefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
unionall
select*,'不相同數據'asnotefrom表Acwherec.namenotin
(
selecta.namefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)orc.agenotin
(
selecta.agefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)
unionall
select*,'不相同數據'asnotefrom表Bcwherec.namenotin
(
selecta.namefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)orc.agenotin
(
selecta.agefrom表Aaleftjoin表Bb
ona.name=b.name
wherea.age=b.age
)

『陸』 用SQL查詢兩個表中相同的數據

1、創建測試表;

create table test_col_1(id number, var varchar2(200));

create table test_col_2(id number, var varchar2(200));

『柒』 sql兩個表數據比較

select count(*) from a
left outer join (select b.編號,sum(b.數量) from b group by b.編號) c on a.編號=c.編號 and a.數量>c.數量

『捌』 SQL如何對2個表的數據進行對比

a表與b表通過哪個欄位可以關聯起來,關系是1對多還是多對多

select * from tablesA a
left join tablesB b on a.xx=b.xx
where a.xx1=b.xx1

類似這種

『玖』 sql查詢、對比兩個表

select id from works minus select w_id from data_1 --這個運算起來較快,works有的data_1沒有
select id from works intersect select w_id from data_1 --兩個資料庫交叉的部分