我有兩張桌子,我正試圖將它們組合在一起。爲了簡單起見,它們每個都有兩列:在表中通用的ID和不同的數值。但是,並非所有的ID都出現在兩個表中,因此我使用了FULL OUTER JOIN。爲什麼我在匹配列上獲得完整外部連接的空白值?
Table1 Table2
+------+--------+ +------+--------+
| ID | Value1 | | ID | Value2 |
+------+--------+ +------+--------+
| ABC | 125 | | ABC | 317 |
| DEF | 13 | | HIJ | 95 |
+------+--------+ +------+--------+
我希望外部聯接會給我所有的記錄,像這樣:
+------+--------+--------+
| ID | Value1 | Value2 |
+------+--------+--------+
| ABC | 125 | 317 |
| DEF | 13 | |
| HIJ | | 95 |
+------+--------+--------+
但是我所看到的反而是ID不被複制到合併後的結果,如果它不」 t存在於表1中:
+------+--------+--------+
| ID | Value1 | Value2 |
+------+--------+--------+
| ABC | 125 | 317 |
| DEF | 13 | |
| | | 95 |
+------+--------+--------+
爲什麼我的ID是空白的?我的查詢如下:
SELECT ID, Value1, Value2
FROM Table1
FULL OUTER JOIN Table2 ON Table1.ID == Table2.ID;
我正在使用最靠近SQL Server的公司內部語言。儘管存在一些差異,但我認爲我會首先檢查我對join語法的理解。
鍵和外鍵列在SQL中並不神奇。您需要明確使用'COALESCE'或修改您的消費程序以接受兩個關鍵列。 – Dai