在mysql查询中更新并选择查询

时间:2015-10-18 16:11:28

标签: mysql sql sql-update mysql-workbench

我使用以下格式在同一查询中使用selectupdate命令。

UPDATE t
   SET t.col1 = o.col1
  FROM table1 AS t
         INNER JOIN 
       table2 AS o 
         ON t.id = o.id

我在查询中应用了相同的概念,但它抛出了一个我无法解决的错误。知道我在哪里错了吗?

update T set T.price = 2*OT.ingredients from Cake as T Inner join (select 
    A.cakeid, B.price, sum(C.price) ingredients
from
    Contain as A
        inner join
    Cake as B ON A.cakeid = B.cakeid
        inner join
    Ingredient as C ON C.ingredid = A.ingredid
group by A.cakeid
having B.price <= 2 * sum(C.price) ) as OT on OT.cakeid = T.cakeid

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from Cake as T Inner join (select A.cakeid, B.price, sum(C.price) ingredien' at line 1

1 个答案:

答案 0 :(得分:1)

MySQL中的正确语法是:

update Cake T Inner join
       (select A.cakeid, B.price, sum(C.price) ingredients
        from Contain A inner join
             Cake B
             ON A.cakeid = B.cakeid inner join
             Ingredient as C
             ON C.ingredid = A.ingredid
        group by A.cakeid
        having B.price <= 2 * sum(C.price)
       ) OT
       on OT.cakeid = T.cakeid
    set T.price = 2*OT.ingredients ;