我有了兩個列的SQLite表稱爲匹配列匹配:列1和列2包含整數值:SQLite的選擇和分組跨
column1 column2
------------------
5 6
6 8
8 9
90 91
1 20
10 20
我想匹配在任一列中發現重複的號碼,加入他們的行列包括比賽第二個值,讓自己的搜索結果中的回報將是:
5, 6, 8, 9
1, 20, 10
(不包括通知,90和91都沒有比賽,因此)。
我的「猜測」在做這樣的:
SELECT column1, column2
FROM match
WHERE column2
IN (SELECT column1
FROM match
GROUP BY column1 HAVING (COUNT(column1) > 0))
UNION
SELECT column1, column2
FROM match
WHERE column1
IN (SELECT column2
FROM match
GROUP BY column1 HAVING (COUNT(column2) > 0))
UNION
SELECT column1, column2
FROM match
WHERE column1
IN (SELECT column1
FROM match
GROUP BY column1 HAVING (COUNT(column1) > 1))
UNION
SELECT column1, column2
FROM match
WHERE column2
IN (SELECT column2
FROM match
GROUP BY column2 HAVING (COUNT(column2) > 1))
,結果幾乎是我所需要的:
5 6
6 8
8 9
1 20
10 20
但我真正需要的是有結果不知何故分組。例如:
(5,6,8,9)(1,10,20)
這是可能的?而我的SQL嘗試是否過於複雜?
有沒有最大限度的多少可以找到相匹配?我並不認爲這種邏輯應該在數據庫層完成。 –
如果你的規則是有匹配的,爲什麼1,5,9和10會得到你想要的結果? – invertedSpear
哦,我現在明白了,如果兩個數字都匹配,就需要整個記錄。 – invertedSpear