0

我有一个包含 3 个字段 userID、州、国家/地区的表,我正在尝试运行一个查询来查找该国家/地区是 Great Brittin、加拿大或美国的所有记录,如果该国家/地区是美国,我只想要加利福尼亚州、犹他州和亚利桑那。

我认为这可能有效,但没有

select  *
from    myTable
where   county in ('GB','CA','US')
  and   case when country = 'US' then  state in ('CA','UT','CA')  end

任何 SQL 大师都有想法吗?

**编辑** 我想我试图过度简化这一点。国家和州作为变量传递,因此不确定是否会有“美国”国家,但如果有,就会有州列表

declare @country varchar(500)
,   @state varchar(500)
,   @sqlStr varchar(4000)

select @sqlStr = 'select * from Addresses
WHERE country IN ('+@country+')
OR (country = ''US'' AND stateCode IN ('+@state+'))'

exec (@sqlStr)

这使得这更难。

4

3 回答 3

2

用类似的东西替换最后一行:

and (Country <> 'US' or state in ('ca', 'ut', 'az'))
于 2012-11-09T20:21:32.747 回答
1

首先,您缺少FROM Table查询中的部分。无论如何,应该这样做:

SELECT *
FROM YourTable
WHERE Country IN ('GB','CA')
OR (country = 'US' AND [state] IN ('CA','UT','CA'))
于 2012-11-09T20:24:59.510 回答
0

你是说这个吗

country in ('GB','CA')
or (country = 'US' and  state in ('CA','UT','CA') )
于 2012-11-09T20:22:12.443 回答