Mysql 如何从表A和表B中获得所有结果?(外部联接不存在?)

Mysql 如何从表A和表B中获得所有结果?(外部联接不存在?),mysql,sql,Mysql,Sql,最简单的解释方法是用一个例子: mysql> select * from table_a left join table_b on col_a=col_b; +-------+-------+ | col_a | col_b | +-------+-------+ | 1 | NULL | | 2 | NULL | | 3 | 3 | | 4 | 4 | +-------+-------+ mysql> select * from

最简单的解释方法是用一个例子:

mysql> select * from table_a left join table_b on col_a=col_b;
+-------+-------+
| col_a | col_b |
+-------+-------+
|     1 |  NULL |
|     2 |  NULL |
|     3 |     3 |
|     4 |     4 |
+-------+-------+

mysql> select * from table_a right join table_b on col_a=col_b;
+-------+-------+
| col_a | col_b |
+-------+-------+
|     3 |     3 |
|     4 |     4 |
|  NULL |     5 |
|  NULL |     6 |
+-------+-------+
但是我怎么得到这个呢

mysql> select * from table_a ???? table_b on col_a=col_b;
+-------+-------+
| col_a | col_b |
+-------+-------+
|     1 |  NULL |
|     2 |  NULL |
|     3 |     3 |
|     4 |     4 |
|  NULL |     5 |
|  NULL |     6 |
+-------+-------+

@Abe的结构:

CREATE TABLE IF NOT EXISTS `table_a` (
  `col_a` int(11) NOT NULL,
  PRIMARY KEY (`col_a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `table_a` (`col_a`) VALUES
(1),
(2),
(3),
(4);

CREATE TABLE IF NOT EXISTS `table_b` (
  `col_b` int(11) NOT NULL,
  PRIMARY KEY (`col_b`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `table_b` (`col_b`) VALUES
(3),
(4),
(5),
(6);

本文提供了几种使用MySQL模拟完全外部连接的方法


希望这能有所帮助。

由于MySQL中没有
完全外部连接
选项,我认为您只能使用
联合

select * from table_a left join table_b on col_a=col_b
UNION 
select * from table_a right join table_b on col_a=col_b

我们能看看源表是什么样子吗?@Abe:我相信你可以从这些查询中拼凑出来<代码>表a有1列
列a
的值为1-4,同样,表b的值为3-6您是正确的@Mark I can。我也可以在没有任何注释的情况下找出源代码。这并不意味着我喜欢;)@阿贝:公平点。。。但在这种情况下应该很简单:)是的,我同意这很简单。