Bagaimana untuk menggunakan tiga jadual untuk melaksanakan operasi FULL OUTER JOIN dalam MySQL?
P粉852114752
2023-09-01 21:48:57
<p>考虑以下表:</p>
<pre class="lang-sql prettyprint-override"><kod>buat jadual `t1` (
`tarikh` tarikh,
`nilai` int
);
buat jadual `t2` (
`tarikh` tarikh,
`nilai` int
);
buat jadual `t3` (
`tarikh` tarikh,
`nilai` int
);
masukkan ke dalam `t1` (`tarikh`, `nilai`)
nilai ("2022-01-01", 1),
("2022-03-01", 3),
("2022-04-01", 4);
masukkan ke dalam `t2` (`tarikh`, `nilai`)
nilai ("2022-01-01", 1),
("2022-02-01", 2),
("2022-04-01", 4);
masukkan ke dalam `t3` (`tarikh`, `nilai`)
nilai ("2022-01-01", 1),
("2022-02-01", 2),
("2022-03-01", 3);
</code></pre>
<p><kod>t1</kod>表缺少<kod>2022-02-01</kod>日期,<kod>t2</kod>缺少-0<0 /kod>,<kod>t3</kod>缺少<kod>2022-04-01</kod>。我想要将这三个表:连接亷来这三个表:连接亷束/p gt;
<pre class="brush:php;toolbar:false;">| t1.tarikh | t1.nilai | t2.tarikh | t2.nilai | t3.tarikh | t3.nilai |
| | | | | | |
| 2022-01-01 | 1 | 2022-01-01 | 1 | 2022-01-01 | 1 |
| null | null | 2022-02-01 | 2 | 2022-02-01 | 2 |
| 2022-03-01 | 3 | null | null | 2022-03-01 | 3 |
| 2022-04-01 | 4 | 2022-04-01 | 4 | null | null |</pre>
<p>我知道如何在两个表之间进行<kod>sambungan luar penuh</kod>,但是在三个或更多集。我尝试了像这样的查询,但没有产生我想要的结果:</p>
<pre class="lang-sql prettyprint-override"><kod>pilih *
daripada `t1`
kiri sertai `t2` pada `t2`.`date` = `t1`.`date`
kiri sertai `t3` pada `t3`.`date` = `t2`.`date` atau `t3`.`date` = `t1`.`date`
kesatuan
pilih *
daripada `t1`
sambung kanan `t2` pada `t2`.`date` = `t1`.`date`
cantumkan kanan `t3` pada `t3`.`date` = `t2`.`date` atau `t3`.`date` = `t1`.`date`;
</code></pre></p>
Anda berada di landasan yang betul, tetapi anda perlu mempertimbangkan semua kombinasi - 3 jadual - 4 klausa kesatuan.