我試圖從 2 個表中找到 ID 的區別。我已經發布了表 1 和表 2 的示例資料。我正在考慮使用 OUTER JOIN,但意識到這可能不是最好的主意。使用 JOIN 找到所需目標的簡單方法是什么?在這種情況下,任何 JOIN 子句都有幫助嗎?如果不是,那么最好(但最簡單)的方法是什么?我感謝大家對此的幫助!
表格1:
| 人 | 包裹編號 | 日期 |
|---|---|---|
| 1 | Y788 | 01-01-2020 |
| 2 | T932 | 01-02-2020 |
| 3 | W345 | 01-03-2020 |
| 3 | S122 | 01-03-2020 |
| 4 | F567 | 01-04-2020 |
| 4 | H767 | 01-04-2020 |
表 2:
| 人 | 包裹編號 | 日期 |
|---|---|---|
| 1 | Y788 | 01-01-2020 |
| 2 | T932 | 01-02-2020 |
| 3 | W345、S122 | 01-03-2020 |
| 4 | F567、H767 | 01-04-2020 |
| 5 | C555 | 01-05-2020 |
預期目標(編碼后):
| 人 | 包裹編號 | 日期 |
|---|---|---|
| 5 | C555 | 01-05-2020 |
代碼:
SELECT Person, Package ID, Date
from table1, table2
OUTER JOIN Person.table1 = Person.table2
Group by Date
Order by Person;
uj5u.com熱心網友回復:
在我的評論中,我已經提到將資料保存在分隔列中是一個壞主意,因為它會使事情復雜化并使查詢變慢請參閱在資料庫列中存盤分隔串列真的那么糟糕嗎?
剩下的是基本的sql
需要 LEFT JOIN 來獲取 table2 中不在 table1 中的所有行。
where 子句只起作用,因為 table2 中的資料之間沒有空格,所以如果你有它們,你需要替換它們。
SELECT table2."Person", table2."Package ID", table2."Date"
FROM table2 LEFT JOIN table1 ON table1."Person" = table2."Person"
WHERE (',' || table2."Package ID" || ',') NOT LIKE ('%,' || COALESCE(table1."Package ID",'') || ',%')
| Person | Package ID | Date |
| :-------|:-----------|:-----|
| 5 | C555 | 01-05-2020 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/510193.html
標籤:sqlsqlite加入
