sql - 无法从具有公共列但不相互依赖的多个独立表中获取数据
问题描述
我有 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'
即使其中一个表没有任何行,上述查询也没有给出任何结果。我不想使用内连接,因为尽管这些表有一个公共列,但它们并不相互依赖,而且我需要来自所有具有某个公共列的表的数据。
此外,这些表的行数不相等。
我究竟做错了什么?
解决方案
如果我错了,请纠正我 - 因为您没有附加任何示例数据和所需的结果,但我假设您只需要合并所有表。你在标题中写到表格是独立的
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'
...
推荐阅读
- java - 保存网站活动的更好选择
- javascript - 按另一个对象数组的属性按整数过滤数组
- c - 遍历列表时出现分段错误
- pandas - 基于多个条件的分割总数
- oracle - DBMS_OUTPUT 缓冲区大小(客户端或数据库端)
- angular - Angular 8 和 .NET Core 类型“可观察”
' 不可分配给类型 'Observable ' - bash - 设置配置文件时,Maven 退出 bash 运行,并且构建失败
- constructor - 将派生类的匿名对象传递给 Eiffel 中的例程
- spring - 如何在对话服务中使用自动连线服务
- flutter - 在提供者的消费者小部件内部的测试中找不到小部件