我在更新和连接方面做得更好,但是这个问题似乎困扰着我。我希望我已经在下面清楚地解释了这些,请原谅这些字段/表格符号,但我试图保留它们,这样一旦我有了答案,我就可以轻松应用到我的实际情况中。任何需要澄清的地方我都很乐意提供,我试图保持解释性和简单性,希望我能成功。使用来自多个其他表格的值更新一个表
我试图更新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条。你需要重新思考你的逻辑。 –