2015-07-06 52 views
0

我見過另一個例子(更新來自主題的最高值的目標表)。mysql更新包含來自其他表的數據的最高值的行

我想用table_B中的數據更新table_A的最高行value。兩者都有一個共同的索引。

某些表格可能會有所幫助。

表A

+-------+----------+---------------+ 
| index | id_order | product_price | 
+-------+----------+---------------+ 
|  1 |  1 | 10.00   | 
|  2 |  1 | 12.00   | 
|  3 |  2 | 5.00   | 
|  4 |  3 | 4.00   | 
+-------+----------+---------------+ 

表B

+----------+------------------+ 
| id_order | price adjustment | 
+----------+------------------+ 
|  1 | 4.00    | 
|  2 | 1.00    | 
|  3 | 2.00    | 
+----------+------------------+ 

表A - POST UPDATE

+-------+----------+---------------+ 
| index | id_order | product_price | 
+-------+----------+---------------+ 
|  1 |  1 | 10.00   | 
|  2 |  1 | 8.00   | 
|  3 |  2 | 4.00   | 
|  4 |  3 | 2.00   | 
+-------+----------+---------------+ 

因此行2(最高的順序1)具有施加的調整,但第1行獨自一人。第3行和第4行每個都是按照他們的推薦值進行調整的,因爲它們是單身人士。

回答

0
UPDATE a 
SET value = (
    a.value - (
     SELECT value 
     FROM b 
     WHERE b.id = a.id 
    ) 
) 
WHERE a.id = 1 
ORDER BY value DESC LIMIT 1 

一切都應該是你現在所想,這是在表中的設定值,其中ID = 1到它的價值減去表中的值,其中ID也是1

+0

原諒我,但這似乎又是相反的。您正在從B中選擇最大值並將其加入到正在更新的A中。我想要的是更新包含最大值的A行,並從B中抽取一些任意值。我希望這是有道理的。 – bcsteeve

+0

我已經爲問題添加了表格。 – bcsteeve

+0

看看我的編輯,它應該是現在你想要的。 – Djip

相關問題