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

我试过使用 distincthaving 我只是觉得不太对劲。任何帮助将不胜感激,我正在使用 sqlite3,谢谢 :)

您可以自己加入

这是SQLFiddle Demo

输入 :

输出

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

SQL Fiddle