mysql - 构造一个既可以使用特定表也可以不使用特定表的查询

标签 mysql sql

我正在做一个系统,在查询中连接多个表。 在大多数情况下,以下类型的查询可以解决问题:

     SELECT * FROM A JOIN B ON A.a = B.a JOIN C ON C.a = A.a WHERE A.a = 123;  

属性A.a是PK,在B.a和C.a中用作FK。

在某些情况下,没有相应的 B.a 和 C.a。在其他情况下,只是缺少 C.a。 就像现在一样,如果 B 或 C 中没有相应的键,我会得到一个空集。正如预期的那样。

如果只有 A 存在,则生成一个仅包含 A 属性的集合的查询会很方便,如果 A.a = B.a 等,则添加 B 和 C 属性。

我想这需要 DBMS 特定的解决方案,而不是通用 SQL,但我不确定。

如果可能的话,有什么想法应该如何完成吗?

最佳答案

你想要这个:

SELECT *
FROM A LEFT OUTER JOIN
     B
     ON A.a = B.a LEFT OUTER JOIN
     C
    ON C.a = A.a
WHERE A.a = 123

左外连接保留第一个表(“左边”的表)和右边所有匹配表中的所有记录。您可以引用任何表中的列。如果没有匹配,则值为 NULL。

关于mysql - 构造一个既可以使用特定表也可以不使用特定表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922516/

相关文章:

php - 最有效的数据收集方式?

php - 检查产品的可用性

sql - R编程,导入数据

sql - 将计数追加为表列

php - 从公共(public)范围获取变量以连接数据库第 2 部分

mysql - SQL 从同一个表中选择列

php - 在 Laravel 中向数据透视表添加列

php - 导入 CSV 数据时跳过重复值

mysql - 如何获取给定日期的最后时间戳?

MySQL顺序排名列