使用所选列中的值更新多行

时间:2016-02-15 09:50:57

标签: mysql rows

我是SQL的新手,我有一个要求,我必须将特定列中的值增加1并根据id在同一列中更新该值。

这就是我想要的,

    UPDATE books SET version_num = 
  (SELECT (version_num + 1) FROM books WHERE book_recid IN 
('72b72282-707b-4dd4-ab08-f5a085e92a2b', '73255df2-413e-4aad-892d-edc08ffa3405'))
WHERE book_recid IN 
('72b72282-707b-4dd4-ab08-f5a085e92a2b', '73255df2-413e-4aad-892d-edc08ffa3405');

我知道上面的查询不起作用。我想要一个查询来更新数据库中的值,如上所述。

3 个答案:

答案 0 :(得分:1)

向列添加1很简单。

您的查询过于复杂。

UPDATE books SET version_num = version_num +1
WHERE book_recid IN ('72b72282-707b-4dd4-ab08-f5a085e92a2b', 
                     '73255df2-413e-4aad-892d-edc08ffa3405');

答案 1 :(得分:0)

您可以在更新查询

中执行操作
UPDATE A SET col1 = something
FROM B
INNER JOIN C on B.col4 = C.col5
WHERE A.col2 = B.col3

在您的情况下,它可能类似于以下

UPDATE books b SET version_num = tcp.version_num + 1
FROM tag_config_params tcp
WHERE tcp.book_recid = b.book_recid
AND tcp.book_recid IN ('72b72282-707b-4dd4-ab08-f5a085e92a2b', '73255df2-413e-4aad-892d-edc08ffa3405');

我假设book_recid是一个外键关系。

答案 2 :(得分:0)

这样做

UPDATE books
    SET version_num = tb1.vers
from (
    SELECT (version_num + 1) as vers FROM tag_config_params
     WHERE book_recid IN
  ('72b72282-707b-4dd4-ab08-f5a085e92a2b', '73255df2-  413e-4aad-892d-edc08ffa3405')
) tb1
WHERE book_recid IN 
('72b72282-707b-4dd4-ab08-f5a085e92a2b', '73255df2-413e-4aad-892d-edc08ffa3405');