我有一个包含 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)
这使得这更难。