SQL 查找共享某些值但不共享其他值的对的查询
SQL query for finding pairs that share some values but not others
我在为这个问题创建查询时遇到了一些问题。
我需要找出哪些人 WorkedOn
一起建造但没有 Financed
他们在一起。
我的table:
Build(person, financed, workedOn)
Person | Financed | WorkedOn
-----------------------------
Person1| Build1 | Build4
Person2| Build2 | Build5
Person3| Build1 | Build5
Person4| Build2 | Build3
Person5| Build3 | Build1
Person6| Build1 | Build5
Person7| Build4 | Build3
Person8| Build5 | Build3
正确的查询应该产生这样的结果:
Person
-------
Person7 Person8
Person8 Person4
Person6 Person3
我试过使用 distinct
和 having
我只是觉得不太对劲。任何帮助将不胜感激,我正在使用 sqlite3,谢谢 :)
您可以自己加入。
输入 :
输出:
SELECT T1.Person,T2.Person,CONCAT(T1.Person,' ',T2.Person) AS Person
FROM
Build T1
INNER JOIN
Build T2
ON T1.WorkedOn = T2.WorkedOn AND T1.Financed <> T2.Financed
WHERE T1.Person < T2.Person
希望这对您有所帮助。
SELECT t1.person, t2.person
FROM build t1, build t2
WHERE t1.workedon = t2.workedon
AND t1.financed != t2.financed
AND t1.person > t2.person
我在为这个问题创建查询时遇到了一些问题。
我需要找出哪些人 WorkedOn
一起建造但没有 Financed
他们在一起。
我的table:
Build(person, financed, workedOn)
Person | Financed | WorkedOn
-----------------------------
Person1| Build1 | Build4
Person2| Build2 | Build5
Person3| Build1 | Build5
Person4| Build2 | Build3
Person5| Build3 | Build1
Person6| Build1 | Build5
Person7| Build4 | Build3
Person8| Build5 | Build3
正确的查询应该产生这样的结果:
Person
-------
Person7 Person8
Person8 Person4
Person6 Person3
我试过使用 distinct
和 having
我只是觉得不太对劲。任何帮助将不胜感激,我正在使用 sqlite3,谢谢 :)
您可以自己加入。
输入 :
输出:
SELECT T1.Person,T2.Person,CONCAT(T1.Person,' ',T2.Person) AS Person
FROM
Build T1
INNER JOIN
Build T2
ON T1.WorkedOn = T2.WorkedOn AND T1.Financed <> T2.Financed
WHERE T1.Person < T2.Person
希望这对您有所帮助。
SELECT t1.person, t2.person
FROM build t1, build t2
WHERE t1.workedon = t2.workedon
AND t1.financed != t2.financed
AND t1.person > t2.person