我有一个包含3个字段userID,state,country的表格,我正在尝试运行一个查询,查找该国家/地区是Great Brittin,加拿大或美国的所有记录,如果该国家/地区是US,我只想要在加利福尼亚州创建记录,犹他州和亚利桑那州
我认为这可能有效,但没有
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)
这使得这更难。
答案 0 :(得分:2)
用类似的东西替换最后一行:
and (Country <> 'US' or state in ('ca', 'ut', 'az'))
答案 1 :(得分:1)
首先,您错过了查询中的FROM Table
部分。无论如何,这应该这样做:
SELECT *
FROM YourTable
WHERE Country IN ('GB','CA')
OR (country = 'US' AND [state] IN ('CA','UT','CA'))
答案 2 :(得分:0)
country in ('GB','CA')
or (country = 'US' and state in ('CA','UT','CA') )