mysql - 选择是否加入一张表 否则加入另一张表
问题描述
有3张桌子。让我们称它们为 a、b 和 c。根据表 a 中一个单元格的值,从表 a 中选择的数据必须与 b 或 c 相交。让我们称这个单元格为 d。MySQL中有没有办法进行如下查询:
SELECT
a.cell,
a.other_cell,
a.d,
alias.cell,
alias.other_cell if(
a.d = 3,
left join b as alias on b.id = a.id,
left join c as alias on c.id = a.id
)
FROM
a where a.id = 123
解决方案
您可以尝试例如Conditional join as here但改为coalesce
使用CASE WHEN
简而言之:
相反,您只需 LEFT OUTER JOIN 到两个表,并在您的 SELECT 子句中,从匹配的那个返回数据
select E.EmployeeName, CASE WHEN d = 3 THEN s.store WHEN d <>3 THEN o.office END as Location from Employees E left outer join Stores S on … left outer join Offices O on …
注意我认为这两列必须具有相同的类型,至少在 中PG
,不确定MYSQL
推荐阅读
- python - 为什么并行交换不适用于 python 中的变量?
- javascript - 如何用我自己的 API 数据填充我的图表 (chart.js)
- apache - 基于浏览器类型和 url 模式的 Apache 重定向
- opos - 旧 OPOS 在任何地方调试 CCO?
- python - 期待 2 个参数得到 1 个
- string - 方法 editString 接受一个字符串并将其分解为单个单词的数组,然后根据命令对其进行编辑
- python-3.x - 反转列表时,“类型”对象不可下标
- javascript - 使用模态更新数据后修复日期格式 M d Y
- javascript - 为什么我的 if-else 语句不能使用 OR ( | | )?
- javascript - 用forloop链接promise JS