我们说我有5张桌子。每个表都包含列" INFERRED_MEMBER
",这是bit
数据类型,因此它只能分配0
或1
值。
现在我想SELECT * FROM
只有那些有任何" 1
" in" INFERRED_MEMBER
"列。
所以逻辑是这样的:
如果TABLE1
在{34} 1
"列中的任何位置包含INFERRED_MEMBER
,请返回
SELECT *
FROM TABLE1
WHERE INFERRED_MEMBER = 1
其他表格等等。
如何实现这一目标?我假设" CASE
"功能不是为此而构建的。
答案 0 :(得分:0)
如果您需要不同的结果集,可以对每个表使用(IF EXISTS),如:
IF EXISTS (SELECT * FROM TABLE1 WHERE INFERRED_MEMBER = 1)
SELECT *
FROM TABLE1
WHERE INFERRED_MEMBER = 1
否则你应该使用像mxix评论的UNION
答案 1 :(得分:0)
只是澄清EXISTS语句可以在WHERE子句中,即:
SELECT *
FROM TABLE1
WHERE EXISTS (SELECT 1 FROM TABLE1 WHERE INFERRED_MEMBER = 1)
UNION ALL
SELECT *
FROM TABLE2
WHERE EXISTS (SELECT 1 FROM TABLE2 WHERE INFERRED_MEMBER = 1)
等。有更好的方法和dyanamic替代方案,可以为您识别表格并运行输出等。