如何SELECT和UPDATE涉及两个表的查询

时间:2013-06-19 05:23:31

标签: mysql sql many-to-many

使用MYSQL,我可以使用带有where子句

的select语句插入表中
INSERT INTO Targeted (field1,field2) SELECT field1,field2 FROM Table WHERE id=$id

现在我尝试用select进行更新......这是我的表格的样子

 tagged                tags
---------          -------------
fid   tid            id  amount
 1     2              1    0
 1     1              2    0
 2     2              3    0
 3     3              4    0
 3     4              

如何从标记有特定WHERE子句的表中选择fid,如fid = 1然后使用标记的返回结果更新表标记

Input
fid = 1

Desired output
update tags with 1 amount=amount+1
update tags with 2 amount=amount+1

我已经对SO question进行了一些研究,这里我的查询看起来像,但它没有给出任何错误或更改

UPDATE
     tags
SET
     tags.amount = tags.amount+1
FROM
     tags
INNER JOIN     
     tagged
ON     
     tags.id = tagged.tid 
WHERE
     tagged.fid  = 1

1 个答案:

答案 0 :(得分:1)

您的UPDATE语法错误。在MySql表中,首先是ref,然后是SET子句。

尝试

UPDATE tags t JOIN tagged d
    ON t.id = d.tid 
   SET t.amount = t.amount + 1
WHERE d.fid  = 1

更新tags表格后会显示

| ID | AMOUNT |
---------------
|  1 |      1 |
|  2 |      1 |
|  3 |      0 |
|  4 |      0 |

这是 SQLFiddle 演示