在 SQLite 中,我有兩個表,tab_a并且tab_b. 兩者都有一些相似的列和一些不同的列:
tab_a -> id | utc | name | data_1 | data_2 | data_3
tab_b -> id | utc | name | data_x | data_y | data_x
因此,在此示例中,兩個表都有列id、和其他三個特定于這些表的列。此外,兩個表中的欄位可以包含相同的值。但是,它們不是相同的資料集!因此,例如in是另一個資料集而不是in - 它們只是隨機具有相同的 ID。utcnameidid = 1tab_aid = 1tab_b
現在我想(外部?)加入這兩個表以從它們中獲取所有記錄的組合串列,當然只有共享列。但由于兩個表的 ID 可以相同,我需要在我的聯接中添加一個列來說明該行來自哪個表。
因此,例如,連接的結果可能如下所示:
id | tab | utc | name
--- ------- ------ -----
1 | tab_a | ... | ...
2 | tab_a | ... | ...
2 | tab_b | ... | ...
3 | tab_b | ... | ...
4 | tab_a | ... | ...
4 | tab_b | ... | ...
如何以這種方式在 SQLite 中加入兩個表并添加此“自定義”列?如果這是不可能的,我應該在我的情況下使用什么其他“最佳實踐”方法?
uj5u.com熱心網友回復:
您必須使用UNION,而不是JOIN為了您的目的:
CREATE TABLE tab_a (
id int PRIMARY KEY,
utc text,
name text
);
CREATE TABLE tab_b (
id int PRIMARY KEY,
utc text,
name text
);
INSERT INTO tab_a (id, utc, name)
VALUES (1, "utc1", "name1"), (2, "utc2", "name2");
INSERT INTO tab_b (id, utc, name)
VALUES (1, "utc3", "name3"), (2, "utc4", "name4");
SELECT id, name, utc, "tab_a" as tab from tab_a
UNION SELECT id, name, utc, "tab_b" as tab from tab_b;
回復:
| ID | 名稱 | 世界標準時間 | 標簽 |
|---|---|---|---|
| 1 | 名稱1 | utc1 | tab_a |
| 1 | 名稱3 | UTC3 | tab_b |
| 2 | 名稱2 | UTC2 | tab_a |
| 2 | 名稱4 | UTC4 | tab_b |
DB Fiddle 中的示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417998.html
標籤:
下一篇:在時間塊內獲取不同的值
