首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >条件mysql如果内部连接

条件mysql如果内部连接
EN

Stack Overflow用户
提问于 2014-09-08 04:38:24
回答 1查看 179关注 0票数 0

如果字段是非空的,就可以执行条件联接吗?即如果字段为空,则执行联接而不返回值;如果字段为非空,则执行联接并返回值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT CASE WHEN i.id_servicio is null THEN p.nombre as proveedor, origen_incidencia.nombre as origen, relativo_a.nombre as relativo, i . * , u.nombre AS usuario ELSE p.nombre as proveedor, origen_incidencia.nombre as origen, relativo_a.nombre as relativo, i . * , u.nombre AS usuario,s.nombre
end

from incidencias i 

INNER JOIN usuarios AS u ON i.id_usuarios =19 AND i.id_usuarios = u.id

case when i.id_servicio is not null then 
INNER JOIN servicios s ON s.id = i.id_servicio
end
INNER JOIN relativo_a ON relativo_a.id = i.id_relativo_a
INNER JOIN origen_incidencia ON origen_incidencia.id = i.id_origen_incidencia
INNER JOIN proveedores p ON p.id = i.id_proveedor
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 04:39:58

是的,这叫outer join

有几种口味的。在这种情况下,您可以使用left outer join,通常称为left join

这个查询将返回所有的意外事件,如果没有连接到-erm事件(?)的服务,则只返回名称NULL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 
  i.id,
  s.nombre
FROM incidencias i 
LEFT JOIN servicios s ON s.id = i.id_servicio

还有一个right join,它做同样的事情,但是反过来(第一个表中的行是可选的)。通常,使用右联接被认为是错误的做法,因为读取它更令人困惑,特别是当您在同一个查询中将其与左联接组合时。我不认为在某些情况下您必须使用它,因为您总是可以通过倒转表来用左连接来替换它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25724471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文