выберите несколько столбцов из двух таблиц и ПОЛНОСТЬЮ ВНУТРИ их - PullRequest
0 голосов
/ 24 мая 2018

У меня есть две таблицы, и они имеют только id общего.Я хочу полностью присоединиться к ним.

SELECT *
FROM message m
FULL OUTER JOIN
  (SELECT id, result, start, finish, message
   FROM  message_execution) ex ON ex.id = m.id
WHERE  m.id = '1626'

Кажется, что вышеприведенное утверждение работает.Однако мне нужно всего несколько столбцов первой таблицы.Я попытался указать имена столбцов, но это не работает.Как выбрать только те столбцы message, которые мне нужны?

1 Ответ

0 голосов
/ 24 мая 2018

Не использовать select * - выберите нужные столбцы:

select m.col_1, m.col_2, 
       ex.*
from message m 
  full outer join (
    select id, result, start, finish, message
    from message_execution
  ) ex on ex.id = m.id
where m.id = 1626;

Или вы можете упростить это до:

select m.col_1, m.col_2, 
       ex.id, ex.result, ex.start, ex.finish, ex.message
from message m 
  full outer join message_execution ex on ex.id = m.id
where m.id = 1626;

Если id определено какчисло, вы не должны сравнивать его со строковой константой.'1626' - строковая константа, 1626 - число.


Обратите внимание, что условие where в таблице message по существу превращает полное объединение в левое соединение, поэтому приведенное выше эквивалентно:

select m.col_1, m.col_2, 
       ex.id, ex.result, ex.start, ex.finish, ex.message
from message m 
  left outer join message_execution ex on ex.id = m.id
where m.id = 1626;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...