mysql UPDATE行包含来自另一个表的数据的最高值

时间:2015-07-06 06:44:20

标签: mysql join sql-update

我已经看到了反过来的例子(更新了目标主题的最高值的目标表)。

我想更新table_A中具有最高value的行,其中包含在table_B中找到的数据。两者都有一个共同的指数。

有些表可能会有所帮助。

表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行均按其尊重值进行调整,因为它们是单身。

1 个答案:

答案 0 :(得分: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 

现在一切都应该是你想要的,这是将表a中的值设置为id = 1到它的值减去表中的值,其中id也是1。