我有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'
即使其中一个表没有任何行,上述查询也不会给出任何结果。我不想使用内部联接,因为尽管表具有公共列,但它们彼此不依赖,并且我需要来自具有特定公共列的所有表中的数据。
此外,表的行数不相等。
我在做什么错了?
答案 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'
...