我有一个包含两列的表:id和content。
content是一个json字段。
我需要删除json中某个属性上的重复项。
下面是我拥有的json的一个例子:
{
"num_aire_ospf": "",
"name": "name1",
"rpv": "119"
}下面是我需要删除的重复项的示例:
ID | Content
--------------------------------------------------------------------------
1 | {"num_aire_ospf": "", "name": "name1", "rpv": "119" }
2 | {"num_aire_ospf": "", "name": "name1", "rpv": "119" }
3 | {"num_aire_ospf": "", "name": "name1", "rpv": "119" }
4 | {"num_aire_ospf": "", "name": "name1", "rpv": "120" }
5 | {"num_aire_ospf": "", "name": "name8", "rpv": "150" }
6 | {"num_aire_ospf": "", "name": "name8", "rpv": "150" }
7 | {"num_aire_ospf": "", "name": "name8", "rpv": "151" }我想删除具有相同名称的第一行。
在本例中,我想执行一个查询,删除第1、2、3、5、6行,只保留这些行:
ID | Content
--------------------------------------------------------------------------
4 | {"num_aire_ospf": "", "name": "name1", "rpv": "120" }
7 | {"num_aire_ospf": "", "name": "name8", "rpv": "151" }因此,只保留名称相同的最后一行。
因此,对于'name1‘,我需要删除名称为'name1’的前3行。对于'name8‘,我需要删除名称为' name '8的前2行。
它必须是动态的,因为我有很多同名的行,我想保留最后一行。
发布于 2018-02-05 23:53:55
在关系数据库的表中没有“最后一行”(或“第一行”)这样的东西。从你的例子中,我猜“最后一行”,你指的是具有最高id的那个,然后你可以使用这个:
delete from data
where id not in (select max(id)
from data
group by content ->> 'name')https://stackoverflow.com/questions/48626316
复制相似问题