我是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');
我知道上面的查询不起作用。我想要一个查询来更新数据库中的值,如上所述。
答案 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');