2015-03-05 5 views
2

У меня есть запрос, как показано ниже.Возвращает значение NULL, когда MySQL возвращает пустой набор результатов

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). 

Так как это возможно, чтобы отобразить значение NULL, когда MYSQL возвращает пустой set.Any оцененная помощь.

+0

Повторная настройка 0 строк означает, что есть нет соответствующей записи с 'inner join'. Если вы все еще хотите, чтобы некоторые данные использовали вместо «left join». –

+0

это поможет вам http://stackoverflow.com/questions/9487963/mysql-query-to-return-number-zero-if-no-results –

+0

Это подозрительное требование. Почему, по-вашему, вам нужно это делать? Это указывает на логический недостаток вашей программы. Вы принципиально меняете значение «количество строк» ​​в запросе для подмножества сценариев. –

ответ

0

Вы можете использовать только Outer select. Инкапсуляция запрос с Outer select, если вы хотите реально NULL значение из базы данных в случае 0 строк,

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

Вы можете использовать вариант с UNION ALL и LIMIT как,

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

Если вы хотите, чтобы результат был нулевым, если у вас есть 0 строк, попробуйте эту инструкцию:

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 
Смежные вопросы