我有两个表,表A总是有数据,表B可能为空。当我知道表B为空时,我想将@Filter参数设置为0,并查看表A中的所有记录(忽略表B)。当我知道表B不为空时,我想将@Filter参数设置为1,仅显示两个表之间共同的行(使用列X和Y)。
我从未找到过一个确定的解决方案,我尝试了不同的方法,但都不理想:
我从未找到过一个确定的解决方案,我尝试了不同的方法,但都不理想:
- exec @sqlString: potential sql injection / not very readable code (IMHO)
- UNION: My query is too large to duplicate
OR in WHERE condition: Too slow in some cases
DECLARE @Filter BIT = 0 SELECT A.* FROM A, B WHERE @Filter = 0 OR (B.X = A.X AND B.Y = A.Y)