MySQL - 连接 a 或 b

标签 mysql sql join conditional-statements

假设我有一个 TABLE a,其中一个 COLUMN data 是要join 其他 2 个表的数据( TABLE bTABLE c) 因为我想在 bc 中获取 COLUMN info .
问题是 a.datab.data 或仅c.data 匹配

  • 如何根据a获取b.infoc.info


我试了多远:

在使用明显错误的语法进行多次尝试后,我做的最好的是在 2 个查询中:

SELECT b.info FROM a INNER JOIN b ON a.data = b.data
SELECT c.info FROM a INNER JOIN c ON a.data = c.data

我想实现这样的东西:

SELECT alias.info FROM a INNER JOIN (b OR c) AS alias ON a.data = alias.data


我为什么要这样做

实际上,我可以使用 PHP 获取我想要的数据并使用它。但是我正在做一个巨大的过程(与我的问题无关)而不是一个好的查询,并且页面加载时间太长。

最佳答案

您可以左连接到两个 bc表,然后使用 info字段不是 NULL :

select coalesce(b.info, c.info) info
from a
  left join b on a.data = b.data
  left join c on a.data = c.data

关于MySQL - 连接 a 或 b,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944850/

相关文章:

sql - 在索引/唯一字段上查询时使用 MySQL "LIMIT 1"有什么意义吗?

php - 将 MySQL INNER JOIN 的结果合并到一个 PHP 数组中

sql 连接语法

MySQL 5.5 升级到 5.6 创建问题

php - 使用 MySQL 和 PHP 将图像添加到排名 1、2 和 3

php - mysqli 多个查询 - 设置变量产生 bool 错误/如何跳过这个?

mysql - SQL + goLang - 运行带有 IN 条件的 select 语句 - 并向它传递一个 id 数组?

php - SQL执行顺序

mysql - 在第三级子查询中使用列

mysql - 在表中插入值