我有這樣的一個表:比較列表SQL查詢
table t1{ida,idb,idc}
和我的記錄TABLETYPE變量列表
table t2{idb,idc}
現在,我要檢查不存在任何同所有的t2
其中組由我IDA
我有這樣的一個表:比較列表SQL查詢
table t1{ida,idb,idc}
和我的記錄TABLETYPE變量列表
table t2{idb,idc}
現在,我要檢查不存在任何同所有的t2
其中組由我IDA
嘗試它採用inner join
找到表t1
和t2
匹配的行,並顯示t1.ida
值以下查詢其中有一個完全匹配
select a.ida
from t1 a inner join t2 b
on a.idb = b.idb and a.idc = b.idc
group by a.ida
having count(1) >= (select count(1) from t2)
坦克,最後一行是什麼意思? – user2830448
這不起作用:'INSERT INTO @ T1 VALUES(1,1,1), (1,2,1), (1,3,2), (2,1,1), (2,2,1), (2,1,2)'和'INSERT INTO @ T2 VALUES(1,1), (2,1), (3,2), \t(4, 2)'。 並且您正在返回'1' –
@ user2830448最後一行比較't1.ida'每個值的表't1(idb,idc)'和't2(idb,idc)'之間匹配對的數量 –
好像你組t1
想是這樣的:
DECLARE @t1 TABLE (ida INT, idb INT, idc INT)
DECLARE @t2 TABLE (idb INT, idc INT)
INSERT INTO @t1
VALUES (1, 1, 1),
(1, 2, 1),
(1, 3, 2),
(2, 1, 1),
(2, 2, 1),
(2, 1, 2)
INSERT INTO @t2
VALUES (1, 1),
(2, 1),
(3, 2)
SELECT DISTINCT
t1.ida
FROM @t1 t1
WHERE NOT EXISTS (SELECT *
FROM @t2 t2
WHERE NOT EXISTS (SELECT *
FROM @t1
WHERE ida = t1.ida
AND idb = t2.idb
AND idc = t2.idc))
AND NOT EXISTS (SELECT *
FROM @t1 tt1
WHERE ida = t1.ida
AND NOT EXISTS (SELECT *
FROM @t2
WHERE idb = tt1.idb
AND idc = tt1.idc))
輸出:
ida
1
所以這僅返回ida
值其中有除同一比賽的數量的完全匹配。即下面將仍然匹配:
(1, 1, 1),
(1, 2, 1),
(1, 3, 2),
(1, 3, 2)
這是正確的,但是這種查詢很多選擇昂貴的原因? – user2830448
請提供一些示例數據和預期輸出來澄清 – GurV
Plus標記數據庫您正在使用的問題 – GurV
我有一個表t1(ida,idb,idc)例如與這些記錄: (1,1,1),(1,2 ,1),(1,3,2),(2,1,1),(2,2,1),(2,1,2)(1,1),(2,1),(3,2) 在這個例子中,首先我想通過ida對t1組進行分組,然後檢查t2 (1,(1,1),(2,1),(3.2)),(2,(1,1),(2,1),(1,2)) 存在於分組的t1, 中(1,(1,1),(2,1),(3.2)) – user2830448