Проверьте наличие результата из подзапроса в SELECT - PullRequest
0 голосов
/ 31 октября 2018

Как получить ненулевые результаты из подзапроса в инструкции SELECT?

SELECT a, b, c,
       (SELECT d 
        FROM table2
        WHERE ...) as d
FROM table 1
WHERE ...

Я хочу получать результаты только тогда, когда все значения (a, b, c, d) не равны NULL. Не будет странно / неэффективно использовать тот же подзапрос в главном предложении WHERE, но с EXISTS?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Вы можете использовать подзапрос:

select a, b, c, d
from (SELECT a, b, c,
             (SELECT d 
              FROM table2
              WHERE ...) as d
      FROM table 1
      WHERE ... and
            a is not null and b is not null and c is not null
     ) x
where d is not null;

По всей вероятности, вы можете использовать JOIN:

SELECT a, b, c, x.d 
FROM table 1 JOIN
      (SELECT d 
        FROM table2
        WHERE ...
     ) x
WHERE ... and
      a is not null and b is not null and c is not null and d is not null;
0 голосов
/ 31 октября 2018

Самый простой способ сделать это - поместить исходный запрос в подзапрос, а затем проверить, равна ли целая строка, возвращаемая подзапросу, нулю:

SELECT *
FROM (
    SELECT a, b, c,
           (SELECT d 
            FROM table2
            WHERE ...)
    FROM table 1
    WHERE ...
) AS sub
WHERE sub IS NOT NULL

sub является строкой (a,b,c,d), возвращенной подзапросом.

0 голосов
/ 31 октября 2018
SELECT 
 t1.a,
 t1.b,
 t1.c, 
 t2.d
FROM table1 t1
left join table2 as t2 on t2.ID = t1.ID
WHERE t1.a is not null and t1.b is not null and t1.c is not null and t2.d is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...