MySQL返回空结果集时返回NULL值

时间:2015-03-05 07:40:25

标签: mysql sql

我有一个查询,如下所示。

 select a.ab as new from tab a inner join tab b on a.ab=b.ab 

当我尝试运行它的显示时。

  MySQL returned an empty result set (i.e. zero rows). 

因为所选条件没有行。

我需要的实际输出是。

 new
 ----
 NULL

所以我尝试在下面添加此查询。

 select COALESCE(a.ab,'') as new from tab a inner join tab b on a.ab=b.ab 

还在给予

 MySQL returned an empty result set (i.e. zero rows).

那么当MYSQL返回空set时,如何显示NULL值。任何帮助赞赏。

3 个答案:

答案 0 :(得分:1)

您可以使用Outer select。如果您希望在0行的情况下从数据库中获得实际Outer select值,则使用NULL封装查询,

SELECT 
    (
      SELECT a.ab 
      FROM 
          tab a INNER JOIN tab b 
           ON a.ab=b.ab
    ) As New;

您可以使用UNION ALLLIMIT替代方案 如,

      SELECT a.ab 
      FROM 
          tab a INNER JOIN tab b 
           ON a.ab=b.ab
      UNION ALL 
      SELECT NULL
      LIMIT 1

答案 1 :(得分:0)

如果您希望在有0行时结果为null,请尝试以下语句:

IF EXISTS (SELECT 1 FROM TAB AS A INNER JOIN TAB AS B ON A.AB = B.AB )
BEGIN
     SELECT A.AB AS NEW FROM TAB AS A INNER JOIN TAB AS B ON A.AB = B.AB 
END
ELSE
BEGIN
    SELECT NULL AS NEW
END

答案 2 :(得分:0)

为了返回null而不是空结果,请尝试以下操作:

select (select a.ab as new from tab a inner join tab b on a.ab=b.ab);

如果您需要将结果列命名为new,请在末尾添加一个新列:

select (your entire mysql query) new;

说明: 从中选择不符合标准的SQL。但是,它可以在许多数据库中使用。 某些数据库(例如oracle)需要from dual。 如果没有引用表(reference),MySQL不需要FROM DUAL。 如果没有行,则选择没有from子句的选择将返回null。