首页 > 解决方案 > 无法从具有公共列但不相互依赖的多个独立表中获取数据

问题描述

我有 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' 

即使其中一个表没有任何行,上述查询也没有给出任何结果。我不想使用内连接,因为尽管这些表有一个公共列,但它们并不相互依赖,而且我需要来自所有具有某个公共列的表的数据。

此外,这些表的行数不相等。

我究竟做错了什么?

标签: sqlsql-serversql-server-2012

解决方案


如果我错了,请纠正我 - 因为您没有附加任何示例数据和所需的结果,但我假设您只需要合并所有表。你在标题中写到表格是独立的

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'

...

推荐阅读