如果它不为空,则返回MYSQL查询的值,否则返回空字符串

时间:2016-05-13 09:51:27

标签: mysql

我正在运行一个查询,其中如果子查询的结果为空或实际子查询的结果,则其中一个值应为空。这是工作查询:

SELECT 
      CONCAT(u.Apellido, ', ', u.Nombre) AS Nombre,
      u.Email AS Email,
      u.Usuario AS Usuario,
      u.Filizacion AS Filiacion,
      CASE WHEN ((SELECT COUNT(*) FROM tLaboratorio AS l WHERE l.Responsable = '$id') > 0)  THEN (SELECT l.Nombre FROM tLaboratorio AS l WHERE l.Responsable = '$id') ELSE '' END AS Laboratorio
FROM tUsuarios AS u
WHERE u.keyid = '$id';

我想简化查询的CASE部分。基本上,如果tLaboratorio中的Responsable列包含$ id,那么它应该从tLaboratorio返回Nombre列,否则它将不返回任何内容。有一个更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我认为COALESCE正是您所寻找的。

如果只有一行符合您的条件,那么这个简单的查询应该这样做:

SELECT 
      CONCAT(u.Apellido, ', ', u.Nombre) AS Nombre,
      u.Email AS Email,
      u.Usuario AS Usuario,
      u.Filizacion AS Filiacion,
      COALESCE(l.Nombre, '')
FROM tUsuarios AS u
LEFT JOIN tLaboratorio AS l ON l.Responsable = '$id'
WHERE u.keyid = '$id';

如果可以有更多行,您仍然可以使用COALESCE并在其中查询。

COALESCE( SELECT ... , '')