我有这样的情况,即生成一些输出,并根据所属的集合,获取和索引(对于该组通用) 。然后我继续生产,并插入一些属于同一组的新值。我想为这些新记录分配该组已有的相同“标记”。我想单独使用SQL
。 如下图所示,这些组是由一个元组(大陆,区域,状态)组成的,实际上,它由这些元组组成。 (表名: 'geo
')使用基于组值的值填充组(使用group bys更新) - SQL - postgre
我怎样才能把5号抛开曼彻斯特和6一边里昂?
我有这样的情况,即生成一些输出,并根据所属的集合,获取和索引(对于该组通用) 。然后我继续生产,并插入一些属于同一组的新值。我想为这些新记录分配该组已有的相同“标记”。我想单独使用SQL
。 如下图所示,这些组是由一个元组(大陆,区域,状态)组成的,实际上,它由这些元组组成。 (表名: 'geo
')使用基于组值的值填充组(使用group bys更新) - SQL - postgre
我怎样才能把5号抛开曼彻斯特和6一边里昂?
如果确定与第一插入数据,然后运行第二个查询,更新空白组号码,然后有一个选项:
UPDATE yourTable t1
SET group = t2.group
FROM
(
SELECT continent, zone, state
MAX(group) AS group
FROM yourTable
GROUP BY continent, zone, state
) t2
WHERE t1.continent = t2.continent AND
t1.zone = t2.zone AND
t1.state = t2.state
的FROM
子句中的内部查询发现最大group
每个大陆,地区,国家组合的价值。每个group
组合应该只有两种类型的值,即数字和/或NULL
。 NULL
值表示该记录是新插入的,但MAX
函数将忽略该记录。
感谢队友。是的,我很好,首先插入数据,因为这正是我的程序是如何建立在 – Asher11
@ Asher11重新加载页面。我认为你只需要按照大陆,地区和国家进行分组。 –
您目前如何处理记录被插入的情况,这是第一个给定的大陆,地区,州,城市组合?在这种情况下,“组”值如何确定? –
你有效地提出了一个好的观点。由于批量很小,我使用了基于python的解决方案(程序化)。但桌子将变得巨大。我会开放也重写所有的组索引,只要他们是唯一的数字小组明智的 – Asher11