You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP操作PostgreSQL:依据列值移除重复行问题

解决PostgreSQL表重复行保留指定ID的问题

你之前用的SELECT DISTINCT和SELECT DISTINCT ON只是查询去重后的结果,并不会修改数据表本身——这就是为什么执行后表内容没变化的原因哦。要实现删除重复行,仅保留ID为4的那一行,你需要用DELETE语句来实际修改数据。

步骤1:先确认要删除的重复行

先运行这条查询,看看哪些行是和ID=4的行在gene_id、searchterm、types上重复的其他行,避免误删:

SELECT * FROM searchterms
WHERE (gene_id, searchterm, types) IN (
    SELECT gene_id, searchterm, types FROM searchterms WHERE id = 4
) AND id != 4;

步骤2:执行删除操作

确认结果正确后,运行这条删除语句,移除所有重复且ID不等于4的行:

DELETE FROM searchterms
WHERE (gene_id, searchterm, types) IN (
    SELECT gene_id, searchterm, types FROM searchterms WHERE id = 4
) AND id != 4;

补充通用写法(针对多重复组场景)

如果需要处理所有重复组(即所有相同gene_id、searchterm、types的行组),且每个组只保留ID=4的行(若该组存在ID=4的记录),可以用这个更灵活的写法:

DELETE FROM searchterms st
WHERE st.id != 4
AND EXISTS (
    SELECT 1 FROM searchterms st2
    WHERE st2.gene_id = st.gene_id
    AND st2.searchterm = st.searchterm
    AND st2.types = st.types
    AND st2.id = 4
);

把上面的SQL替换到你的PHP代码中执行,就能实现你想要的效果啦。

内容的提问来源于stack exchange,提问作者Nemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:39:48