我有两个表license
,另一个表是device
,在两个表中,我有一个公用列是merchant_id
。
在device
表中,我有一个商人的多个记录(意味着商人ID是重复的)。
但是在license
表merchant_id
中是唯一的(意味着没有重复的商人ID)。
现在,我的要求是我必须对device
表中的行数进行计数,并且需要将计数的数目更新为number_of_devices
表中存在的license
列,并且{{ 1}}列,因此在更新到number_of_devices
表时,我需要检查license
的值。如果计数值达到最大值,那么我需要更新。
我尝试过的查询
MAX
答案 0 :(得分:2)
devices_count
表中确定每个merchant_id
的{{1}}。device
上的license
表中。Greatest()
函数从merchant_id
和现有devices_count
值中获取最大值,然后number_of_devices
。尝试以下操作:
Set
答案 1 :(得分:0)
我想您可以在内部查询中使用CASE命令来实现。 (文档:https://www.postgresql.org/docs/9.1/static/functions-conditional.html)。 示例(未经测试):
update licence l set l.number_of_devices = (CASE WHEN (select count(*) from device d where d.merchant_id = l.merchant_id) > l.number_of_devices THEN (select count(*) from device d where d.merchant_id = l.merchant_id) ELSE l.number_of_devices END );
希望有帮助
欢呼
Nikao