条件mysql如果是内连接

时间:2014-09-08 12:38:24

标签: mysql sql join conditional case

如果字段为非null,则

可以进行条件连接吗?即,如果字段为空,则执行连接而不返回值,如果字段不为null,则执行连接并返回值< / p>

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

1 个答案:

答案 0 :(得分:1)

是的,它被称为outer join

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

如果没有链接到-erm-incident(?)的服务,此查询将返回所有incidencias并返回NULL作为名称。

SELECT 
  i.id,
  s.nombre
FROM incidencias i 
LEFT JOIN servicios s ON s.id = i.id_servicio

还有right join,它的作用相同,但反过来(第一个表中的行是可选的)。通常,使用右连接被认为是不好的做法,因为它更难以阅读,尤其是当您将它与同一查询中的左连接组合时。我不认为在某些情况下你必须使用它,因为你总是可以通过反转表来替换左连接。