我有两张桌子,他们只有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
列?
答案 0 :(得分:1)
请勿使用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;