无法从具有公用列但彼此不依赖的多个独立表中获取数据

时间:2018-08-07 16:15:13

标签: sql sql-server sql-server-2012

我有8个表,它们的列数均相等,并且具有相同的列。我想在单个查询中从所有表中获取数据。

我的表结构是TABLE1,TABLE2,TABLE3,..... TABLE 8。 具有列COLUMNA,COLUMNB ... COLUMNE和COMMON_COLUMN的列 我需要使用where子句获取数据,其中COMMON_COLUMN ='X'

我需要所有表中的所有列。

我使用了类似这样的查询。

    SELECT TABLE1.*, TABLE2.*, TABLE3.*

    FROM TABLE1 T1
    LEFT JOIN TABLE2 T2 ON T1.COMMON_COLUMN = T2.COMMON_COLUMN,
    LEFT JOIN TABLE3 T3 ON T1.COMMON_COLUMN = T3.COMMON_COLUMN

    WHERE T1.COMMON_COLUMN='X' AND T2.COMMON_COLUMN='X' AND  T3.COMMON_COLUMN='X' 

即使其中一个表没有任何行,上述查询也不会给出任何结果。我不想使用内部联接,因为尽管表具有公共列,但它们彼此不依赖,并且我需要来自具有特定公共列的所有表中的数据。

此外,表的行数不相等。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我-因为您没有附加任何样本数据和所需结果 但我认为您只需要合并所有表即可。您在标题中写出表是独立的

SELECT T1.*
FROM TABLE1 T1
WHERE T1.COMMON_COLUMN='X'

UNION ALL

SELECT T2.*
FROM TABLE2 T2
WHERE T2.COMMON_COLUMN='X'

UNION ALL

SELECT T3.*
FROM TABLE3 T3
WHERE T3.COMMON_COLUMN='X'

...