我有一张包含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
无效......
最好的方法是什么......
提前感谢...
答案 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)