PHP - 根据postgresql列中的值删除行

时间:2018-05-25 09:35:51

标签: php postgresql select distinct

我使用PHP在postgresql中生成一个表。

结果表

enter image description here

有许多行具有相同的值,但第一列除外,这是唯一的ID。当我尝试基于gene_id,searchterm和type中的类似值进行删除时。

因此,我使用了以下代码:

$sql = "SELECT DISTINCT gene_id FROM searchterms";

$sql = "SELECT DISTINCT ON (gene_id,searchterm,types) * FROM searchterms";

执行此代码后,我仍然得到相同的结果。我想只保留id为4的行。

4 个答案:

答案 0 :(得分:1)

您是要删除所有空行?

DELETE FROM searchterms WHERE gene_id = 0

对于具有重复项的非空行,您需要选择具有多个行的行:

SELECT gene_d, COUNT(*) c FROM table GROUP BY name HAVING c > 1;

然后,您可以从数组中弹出一个元素,然后删除其他ID。

要停止首先添加重复项,只需先执行SELECT查询,如果未找到任何行,请执行INSERT

答案 1 :(得分:1)

Select * from searchterms WHERE gene_id <> 0 AND searchterm <> 0 AND types <> 0 group by gene_id,searchterm,types

答案 2 :(得分:1)

您应该首先阻止它们插入。

例如

if(geneid == 0){
     break;
}else{
     # insert query}

答案 3 :(得分:0)

我认为在这种情况下,distinct不会起作用。因为如果你给出了不同的信息,它仍会显示2条记录,即gene_id = 0和gene_id = 1253246。

所以为了避免那些其他记录,你可能需要检查像gene_id&lt;&gt;这样的条件。 0或gene_id&gt; 0