我在更新和連接方面做得更好,但是這個問題似乎困擾着我。我希望我已經在下面清楚地解釋了這些,請原諒這些字段/表格符號,但我試圖保留它們,這樣一旦我有了答案,我就可以輕鬆應用到我的實際情況中。任何需要澄清的地方我都很樂意提供,我試圖保持解釋性和簡單性,希望我能成功。使用來自多個其他表格的值更新一個表
我試圖更新Table_J B_ID場我看這兩個向上和C
價值X_ID
該記錄:在其他表
+----+-------+------+------+
| ID | C | X_ID | B_ID |
+----+-------+------+------+
| 1 | Alpha | 10 | |
+----+-------+------+------+
| 2 | Alpha | 20 | |
+----+-------+------+------+
| 3 | Alpha | 30 | |
+----+-------+------+------+
| 4 | Beta | 50 | |
+----+-------+------+------+
:
Table_J。
首先,對於每一個我需要找到所有的B_ID值在Table_C在Table_J匹配C
的記錄記載:
Table_C:
+-------+------+
| C | B_ID |
+-------+------+
| Alpha | 100 |
+-------+------+
| Alpha | 200 |
+-------+------+
| Alpha | 300 |
+-------+------+
| Beta | 400 |
+-------+------+
| Beta | 500 |
+-------+------+
在記錄1的Table_J的情況下其中C
= Alpha
在這種情況下,我會有B_ID
的值100
,200
和300
從Table_C
然後我需要找到記錄TABLE_X其中B_ID
等於任何那些被發現的值並記錄1 Table_J這是10
和更新B_ID
在Table_J的X_ID
與Table_X
發現B_ID
,在這種情況下100
。
TABLE_X:
+------+------+
| B_ID | X_ID |
+------+------+
| 100 | 10 |
+------+------+
| 200 | 20 |
+------+------+
| 300 | 30 |
+------+------+
| 400 | 40 |
+------+------+
| 500 | 50 |
+------+------+
| 600 | 10 |
+------+------+
| 700 | 20 |
+------+------+
| 800 | 30 |
+------+------+
| 900 | 10 |
+------+------+
最終更新後Table_J
將更新,像這樣:
表J中更新:
+----+-------+------+------+
| ID | C | X_ID | B_ID |
+----+-------+------+------+
| 1 | Alpha | 10 | 100 |
+----+-------+------+------+
| 2 | Alpha | 20 | 200 |
+----+-------+------+------+
| 3 | Alpha | 30 | 300 |
+----+-------+------+------+
| 4 | Beta | 50 | 50 |
+----+-------+------+------+
因爲表J中有一個_new_記錄,所以你並不嚴格執行'UPDATE'。相反,你正在做一系列複雜的更新和插入操作。請澄清額外的「Beta」記錄來自您的預期輸出。 –
@TimBiegeleisen我的部分創建表的錯誤,通過編輯修復了問題,所以原始的Table_J具有相同的記錄數。絕對不是隻是更新的插入問題。 – user3649739
您從「Table_J」到「Table_C」的連接條件沒有意義。一個內部連接會產生9條記錄,而不是3條。你需要重新思考你的邏輯。 –