postgresql: вопрос по SELECT - PullRequest
       1

postgresql: вопрос по SELECT

1 голос
/ 23 июля 2011

У меня такой запрос, как

SELECT t3 FROM tbl_join WHERE t2=3 AND t1 in (1,2,3);

, и вывод:

 t3 
----
  1
  1
(2 rows)

Это дает только две строки, поскольку запись для t3 отсутствует.Можно ли изменить запрос SELECT что-то вроде:

SELECT t3||0 FROM tbl_join WHERE t2=3 AND t1 in (1,2,3);

, чтобы получить результат вроде

 t3 
----
  1
  1
  0
(3 rows)

Я имею в виду, можно ли написать запрос, где можно получить вывод снет.из строк, равных нет.аргументов в in clause.Если запись отсутствует, вывод должен прийти в виде некоторого постоянного значения для соответствующего ввода

1 Ответ

1 голос
/ 23 июля 2011

Вы хотите внешнее соединение: что-то вроде

SELECT t.t3 
FROM (VALUES (1), (2), (3)) AS litvals 
    LEFT OUTER JOIN tbl_join as t 
    ON litvals.column1 = t.t1
WHERE t.t2=3

Правка: Хм.если в tbl_join нет соответствующей строки, совпадающей с VALUES, тогда t2 равно NULL, что, конечно, не равно 3. Вы можете решить эту проблему с помощью подвыбора:

SELECT t.t3 
FROM (VALUES (1), (2), (3)) AS litvals 
    LEFT OUTER JOIN (SELECT * FROM tbl_join WHERE t2 = 3) AS t 
    ON litvals.column1 = tbl_join.t1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...