TSQL仅从表中选择数据如果它包含列中的值

时间:2015-04-21 09:56:34

标签: sql-server tsql sql-server-2014

我们说我有5张桌子。每个表都包含列" INFERRED_MEMBER",这是bit数据类型,因此它只能分配01值。

现在我想SELECT * FROM只有那些有任何" 1" in" INFERRED_MEMBER"列。

所以逻辑是这样的: 如果TABLE1在{34} 1"列中的任何位置包含INFERRED_MEMBER,请返回

SELECT * 
FROM TABLE1 
WHERE INFERRED_MEMBER = 1
其他表格

等等。

如何实现这一目标?我假设" CASE"功能不是为此而构建的。

2 个答案:

答案 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替代方案,可以为您识别表格并运行输出等。