【发布时间】:2017-03-09 16:39:31
【问题描述】:
我有一桌人 (CarOwners) 和他们拥有的汽车类型
+-------+-------+
| Name | Model |
+-------+-------+
| Bob | Camry |
| Bob | Civic |
| Bob | Prius |
| Kevin | Civic |
| Kevin | Focus |
| Mark | Civic |
| Lisa | Focus |
| Lisa | Civic |
+-------+-------+
给定一个名字,我如何找到与完全相同相同汽车的其他人?例如,如果我以 Mark 为目标,则没有其他人只有 Civic,因此查询不会返回任何内容。如果我以 Lisa 为目标,查询将返回
+-------+-------+
| Name | Model |
+-------+-------+
| Kevin | Civic |
| Kevin | Focus |
+-------+-------+
因为凯文和丽莎的车一模一样。如果我以 Kevin 为目标,查询将返回 Lisa。
我创建了一个包含我的目标人员汽车的 cte,但我不确定如何实现“完全匹配”要求。我所有的尝试都返回带有子集匹配的结果。
with LisaCars as (
SELECT Model FROM CarOwners WHERE Name = 'Lisa'
)
SELECT Name, Model
FROM CarOwners
WHERE Model in (SELECT * FROM LisaCars) AND Name != 'Lisa'
此查询将返回所有拥有 Civic 或 Focus 的人,这不是我想要的。
+-------+-------+
| Name | Model |
+-------+-------+
| Bob | Civic |
| Kevin | Civic |
| Kevin | Focus |
| Mark | Civic |
+-------+-------+
【问题讨论】:
-
所以你想要完全匹配,而不是部分匹配?即只有当一个人拥有与所查询的人完全相同的汽车(不多不少)?
-
是的。我的示例查询已经提供了部分匹配项。
标签: sql sql-server