选择带有连接的语句到另一个表中的定义

时间:2013-06-18 09:56:00

标签: sql tsql

我有一张包含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无效......

最好的方法是什么......

提前感谢...

3 个答案:

答案 0 :(得分:1)

  

最好的方法是什么......

不要这样做。

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

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);

答案 1 :(得分:0)

你无法拥有动态查询条件。 实现所需目标的唯一方法是使用动态SQL,在字符串中构建查询,然后执行它,如EXEC('select 1')

答案 2 :(得分:0)

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

DECLARE @SQL VARCHAR(MAX)

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

然后执行:

EXEC(@SQL)