【发布时间】:2019-06-26 09:21:31
【问题描述】:
我尝试使用满足另一个表中的条件的值的总和来更新表中的值。
在第一个命令中,我想获取共享文章的数量(这里是3):
db=# select article_id,liked,shared, COUNT(article_id) FROM social WHERE article_id > 0 GROUP BY article_id,liked,shared HAVING article_id=2087 AND shared=true;
article_id | liked | shared | count
------------+-------+--------+-------
2087 | f | t | 3
(1 row)
我有另一个表,我需要把这个值 (3) 放在右栏中:
db=# SELECT article_id,shared FROM articles WHERE article_id=2087;
article_id | shared
------------+--------
2087 |
(1 row)
我可以在 Python 中使用两个命令来做到这一点,但我确信在一个 SQL 请求中有更好的方法来做到这一点?
编辑:
我试过这个命令:
db=# UPDATE articles SET shared=subquery.count FROM ( SELECT count(article_id) FROM social WHERE article_id=2087 AND shared=true) AS subquery WHERE article_id=2087;
UPDATE 1
db=# SELECT article_id,shared FROM articles WHERE article_id=2087;
article_id | shared
------------+--------
2087 | 3
(1 row)
我只需要设置一次 article_id 就可以了。有什么建议吗?
【问题讨论】:
-
把它变成一个答案。
标签: database postgresql dml