【发布时间】:2017-10-23 14:36:04
【问题描述】:
我有两个表(表 A)和(表 B)以及一个表变量(@country),它们将构建 where 条件来查找与国家/地区匹配的员工列表。
TableA(empId, name)
(1,约翰),(2,玛丽),(3,哈利)
TableB(empId, country)
(1,澳大利亚),(1,US),(1,UK),(2,US)
例如,我只需要从 TableA 中选择同时居住在澳大利亚和美国的员工。即emp 1(约翰)。如果需要,查询应该能够在 where 子句中处理更多国家/地区。这取决于表变量@country 中的国家/地区数量。
我尝试了很多选项,包括以下查询,但似乎没有任何效果。
DECLARE @country TABLE (
[country] [nvarchar](255) NOT NULL
);
insert into @country (country) values('Australia'),('US')
Select E.empID, EC.empID,EC.country from TableA E
INNER JOIN TableB EC on E.empID= EC.empID
Where EC.country = ALL(Select country from @country)
您能否建议如何编写最佳查询来完成此任务?请注意,@country 可以有一个或多个国家/地区。
【问题讨论】:
-
在选择中
EC.country应该是US或Australia? -
不知道为什么你需要这个国家
-
@kbball 我需要国家,因为它将包含所有需要搜索的国家。在我的问题中,为了简单起见,我以澳大利亚和美国为例,但实际上它可以是 1 个或多个国家/地区。
-
那么在这种情况下,您希望每个 empid 多行吗?
-
@kbball 是的,有可能
标签: sql sql-server tsql