首先,我在sql上真的不是那么棒,据说这个问题是:
假设我有一张名为Abilities的表.在此示例中,Abilities具有ID,PersonID,Text.
让我说我做了一个搜索,我指定我想要清楚列出每个有能力'飞','开车','唱'但没有能力'打'','滑板'的人
反正有没有写这样的查询,最终只会返回与我上述语句匹配的行?表和它的内容纯粹是虚构的,我可能会添加,因此很奇怪:P
我真的很感激这方面的帮助,因为它是一个相当复杂的数据库搜索工具.
谢谢
SELECT a.PersonId
FROM Abilities a
JOIN Abilities b ON (a.PersonId = b.PersonId AND b.text = 'Drive')
JOIN Abilities c ON (a.PersonId = c.PersonId AND c.text = 'Sing')
LEFT JOIN Abilities d ON (a.PersonId = d.PersonId AND d.text = 'Flight')
LEFT JOIN Abilities e ON (a.PersonId = e.PersonId AND e.text = 'Skateboard')
WHERE a.text = 'Fly' AND d.Id IS NULL and e.Id IS NULL
Run Code Online (Sandbox Code Playgroud)
我看到你有几个答案试图在相同的能力实例上进行IN和NOT IN测试,但这不起作用 - 你显然需要测试不同的能力实例,从而需要这个多重自我加入!