多列使用 WHERE ... IN

3

我尝试获取符合特定条件的一些用户:

SELECT * FROM users
WHERE lastname IN ('Pitt','Jolie','Costner') 
AND firstname IN ('Brad','Angelina','Kevin')

但是这样会显示 Kevin Jolie 和 Brad Costner,这不是我需要的。

所以我尝试了:

SELECT * FROM users
WHERE (lastname,firstname) IN ('Pitt','Brad'),('Jolie','Angelina'),('Costner','Kevin')

哪个会报错:

An expression of non-boolean type specified in a context where a condition is expected, near ','.

你知道有什么查询可以得到我期望的结果吗?

注意:这两列或更多列不一定都是varchar类型,它们可以是任何类型。

2个回答

4
请尝试这个。
SELECT * FROM users
WHERE lastname+firstname IN ('PittBrad','JolieAngelina','CostnerKevin')

如果列中存在空值,则
SELECT * FROM users
WHERE ISNULL(lastname,'')+ISNULL(firstname,'') IN ('PittBrad','JolieAngelina','CostnerKevin')

2
不对而且低效。 - ypercubeᵀᴹ

1
我会使用像这样的查询(但我正在使用SQL-Server 2005,现在可能有更好的方法):
SELECT * FROM users
WHERE 
    (firstname = 'Angelina' AND lastname = 'Jolie') 
OR
    (firstname = 'Brad' AND lastname = 'Pitt') 
OR
    (firstname = 'Kevin' AND lastname = 'Costner') 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接