我试图从firstname和lastname在同一行的表中获取人们的生日。我正在处理100个名字,但我无法获得独特的结果。
我已经尝试了IN名字和姓氏,但我得到的是不在同一行的匹配。
示例:表"测试"
FirstName LastName
约翰·多伊
约翰亚当斯
简·多恩
Molly Jetson
玛丽韦恩
SELECT firstname,lastname
FROM test
WHERE lastname IN (
'Doe',
'Adams',
'Jetson'
)
AND
firstname IN (
'John',
'John',
'Molly'
);
我只想要名字匹配 第二个列表中的姓氏,但是我得到 ANY 的结果找到名字或找到姓氏,所以我得到了#34; John Doe" AND" Jane Doe"在结果中,因为找到了第一个名字,并且还找到了姓氏。
我想要归还的是:
John Doe 约翰亚当斯 Molly Jetson
NOT: 约翰·多伊 简·多伊 约翰亚当斯 Molly Jetson
答案 0 :(得分:1)
您可以从SQL Server 2008开始使用表值构造函数
SELECT t1.FirstName , t1.LastName
FROM Test t1
JOIN (
VALUES ('John','Doe'),
('John','Adams'),
('Molly','Jetson')
)t2(FirstName, LastName)
ON t1.FirstName = t2.FirstName and t1.LastName = t2.LastName
答案 1 :(得分:0)
您需要扩展逻辑以使用and
和or
:
SELECT firstname, lastname
FROM test
WHERE (lastname = 'Doe' and firstname = 'John') OR
(lastname = 'Adams' and firstname = 'John') OR
(lastname = 'Jetson' and firstname = 'Molly')
答案 2 :(得分:0)
我建议连接一个更整洁的where子句:
SELECT
firstname,
lastname
FROM
test
WHERE
firstname + ' ' + lastname IN ('John Doe', 'John Adams', 'Molly Jetson')