我有兩個需要查找所有匹配的記錄表。這些表基於不同的主鍵標識符,但數據點完全相同。我需要一個快速查詢,可以顯示從第一個表格到第二個表格重複的記錄。這裏是什麼,我試圖做一個例子:SQL GROUP BY HAVING問題
DECLARE @Table1 TABLE (ID INT, Value INT)
DECLARE @Table2 TABLE (ID INT, Value INT)
INSERT INTO @Table1 VALUES (1, 500)
INSERT INTO @Table1 VALUES (2, 500)
INSERT INTO @Table2 VALUES (3, 500)
INSERT INTO @Table2 VALUES (4, 500)
SELECT MAX(x.T1ID)
,MAX(x.T2ID)
FROM (
SELECT T1ID = t1.ID
,T2ID = 0
,t1.Value
FROM @Table1 t1
UNION ALL
SELECT T1ID = 0
,T2ID = t2.ID
,t2.Value
FROM @Table2 t2
) x
GROUP BY x.Value
HAVING COUNT(*) >= 2
這段代碼的問題是,它在相關的表1返回記錄2表2。我真的需要它返回的記錄1,記錄4表1與表2中的記錄3相關聯。我嘗試了以下方法:
SELECT MIN(x.T1ID)
,MIN(x.T2ID)
FROM (
SELECT T1ID = t1.ID
,T2ID = 0
,t1.Value
FROM @Table1 t1
UNION ALL
SELECT T1ID = 0
,T2ID = t2.ID
,t2.Value
FROM @Table2 t2
) x
GROUP BY x.Value
HAVING COUNT(*) >= 2
此代碼也不起作用。它返回0,0。
有兩種方法可以爲兩個表返回大於0的MIN值嗎?
記錄沒有太大變化,我想你可以簡單地替換'0'佔位符用'NULL'佔位符(' T2ID = NULL','T1ID = NULL')。 – 2012-03-27 22:08:50