3

我有一个包含 where 选择的表。例如ExpressionTable

ID      WhereCase
------------------
1       = 4 
2       in(2,3)
3       = 3
4       in(4,5,6)

现在我需要使用这个 WhereCase 从另一个表中进行选择。

Select * from tablexy join ExpressionTable as et on tablexy.ID = et.ID
Where Country (this (WhereCase) from the ExpressionTable) 

当我写where Country = et.WhereCase不工作...

最好的方法是什么?

4

3 回答 3

1

最好的方法是什么...

不要这样做。

根据您提供的示例表达式,您可以轻松地以关系格式存储此信息,然后可以将其连接到(或使用EXISTS子句附加到查询上,以保持与重复项相同的语义)。

CREATE TABLE XyCountries
  (
     XyID    INT,
     Country INT
  );

INSERT INTO XyCountries
VALUES      (1,4),
            (2,2),
            (2,3),
            (3,3),
            (4,4),
            (4,5),
            (4,6);
于 2013-06-18T11:25:13.680 回答
0

你不能有动态查询条件。实现您想要的唯一方法是使用动态 SQL,您可以在字符串中构建查询,然后它们像 EXEC ('select 1') 一样执行它

于 2013-06-18T10:04:05.887 回答
0

您将需要使用动态 SQL 构建 SQL 语句,然后执行它,例如

DECLARE @SQL VARCHAR(MAX)

SELECT @SQL = 'Select * from tablexy Where Country ' + et.WhereCase FROM ExpressionTable WHERE ID = ?

然后执行:

EXEC(@SQL)
于 2013-06-18T10:17:27.937 回答