0
CREATE TABLE Permission (uid char(32), pid char(32), term char(32),
PRIMARY KEY (uid, pid, term))
含有值,如
uid pid term
0001 1001 3
0001 1002 3
0001 1002 4
0002 1001 3
0002 1002 3
0002 1002 4
0003 1001 3
0003 1002 4
0003 1002 5
我要回誰具有相同的PID和長期價值的所有用戶的UID ,在這個例子中,我想要0001和0002,但我不知道如何比較每個uid的pid和term值與其他uid的pid和term值中的每一個。我能夠得到的最接近的是確定每個用戶是否有重複的pid。
SELECT uid
FROM Permission
GROUP BY uid, pid
HAVING COUNT (*) > 1
我甚至不確定是否與我想要執行的測試有關。和
SELECT uid
FROM (SELECT P1.uid, P1.pid
FROM Permission P1
WHERE EXISTS (SELECT P2.pid
FROM Permission P2
WHERE P1.pid = P2.pid)) P
GROUP BY P.uid
HAVING COUNT (P.pid) = (SELECT COUNT (P3.pid)
FROM Permission P3
WHERE P3.uid = P.uid)
我想這應該工作,但我顯然是錯誤的,因爲它只是返回所有的uid =)
它不是強制性的,這個解決方案確實它所需要的,但在那裏與這個返回例如同樣有超過2情況下,如果1,2和4的所有比賽(1,2)( 1,4)(2,4)。什麼是將所有這些組合成一個解決方案(1,2,4)的快捷方式,無論是元組,字符串還是其他? – Kebtiz
你可能想問這是另一個問題。答案可能看起來很不一樣。 –
好的,如果我需要追求它,那更多的是好奇心,而不是要求,我會接受你的建議,謝謝。 – Kebtiz