我有两个表license,另一个表device,在这两个表中,我有一个公共列merchant_id。在device表中,我有一个商户的多条记录(意味着商户id是重复的)。但是inlicense表merchant_id是唯一的(意味着没有重复的商家id)。现在我的要求是我必须计算device表中的行数,并且需要将已计算的行数更新到number_of_devices列,该列出现在license表中,并且已经在number_of_devices列中有数据,所以在更新到license表时,我需要检查MAX值。如果计数值达到最大值,则需要更新。我试过的问题:update license l set number_of_devices =from (select count(*),merchant_id from device d group by merchant_id)d where l.merchant_id= d.merchant_id; 最佳答案 在派生表子查询中,从devices_count表中确定merchant_idperdevice。将此派生表连接到license上的merchant_id表。现在,使用 >函数来获得最大值,并从现有的 >值和。请尝试以下操作:UPDATE license lSET l.number_of_devices = GREATEST(t1.devices_count, l.number_of_devices)FROM ( select d.merchant_id, count(d.merchant_id) as devices_count from device d group by d.merchant_id ) as t1WHERE t1.merchant_id = l.merchant_id关于sql - 在两列之间找到最大值,并在postgres中进行相应更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52653715/
10-12 14:08