Возможно ли условное объединение в SQL Server 2005? - PullRequest
1 голос
/ 30 января 2009

Мне нужно написать запрос выбора, который объединяет таблицы на основе условия (в данном случае на основе значения в одном из столбцов). Я хотел бы сделать что-то вроде этого:

SELECT *
  FROM TableA
       INNER JOIN TableB ON (TableA.Column1 = TableB.Column1 OR TableA.Column1 = 0) -- Does not work!

Ответы [ 3 ]

4 голосов
/ 30 января 2009

Я не совсем уверен, что вы делаете, но похоже, что вы ищете внешнее соединение:

SELECT *
FROM TableA LEFT OUTER JOIN TableB ON TableA.Column1 = TableB.Column1
WHERE TableB.Column1 IS NOT NULL
   OR TableA.Column1 = 0
0 голосов
/ 30 января 2009

Если вам нужны строки из таблицы A и строки из таблицы B, просто используйте два оператора select, разделенных командой UNION .

0 голосов
/ 30 января 2009

Это должно достичь того, что вам нужно:

SELECT *
FROM TableA A
WHERE A.Column1 = 0
   OR EXISTS(
            SELECT B.Column1
            FROM TableB B
            WHERE B.Column1 = A.Column1
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...