bugfix> php > 投稿

PHPを使用してpostgresqlでテーブルを生成しています。

結果の表

最初の列を除き、同じ値の行が多数あります。これは一意の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 件
  • すべての空の行を削除しようとしていますか?

    DELETE FROM searchterms WHERE gene_id = 0
    
    

    重複する空でない行については、複数の行を選択する必要があります。

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

    次に、配列から1つの要素をポップしてから、他のIDを削除できます。

    重複が最初に追加されるのを止めるには、単に SELECT を実行します  最初にクエリを実行し、行が見つからない場合は、 INSERT を実行します 。

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

  • そもそも挿入しないようにしてください。

    例えば

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

  • この場合、distinctは機能しません。個別に指定した場合、2つのレコード、つまりgene_id = 0およびgene_id = 1253246が表示されるためです。

    したがって、これらの他のレコードを回避するには、おそらくgene_id<>のような条件を確認する必要があります。  0またはgene_id> 0

あなたの答え