2017-02-14 1 views
1

私は以下のクエリで非常に簡単に達成したSQLテーブルに重複したエントリを見つけることを試みていました。私が探ししようとしています今、何mySqlで同様のエントリを探す

SELECT * FROM sds_bank_phrases INNER JOIN (Select bank_statement FROM sds_bank_phrases GROUP BY bank_statement HAVING COUNT(bank_statement) > 1) dup ON sds_bank_phrases.bank_statement = dup.bank_statement; 
  • は、同じデータを持っていますが、完全な停止がさらに追加されたエントリです。
  • たとえば、bank_statementを持つbank_id 1を持つはい
  • bank_id 2 with bank_statementはい。
  • bank_id 3あり、編集済みです。
  • 上記の例では、最初の2つのエントリは一度閉じるため、それらを抽出したいだけです。ちょうど完全な停止は違いです。
  • 私は20000 bank_statementsを持っていますが、どのようにそのようなエントリを抽出しますか?

上記画像でDBテーブル

enter image description here

  • 我々は知られていないデータを見ることができますが、重複したエントリがあります。
  • 投稿されたクエリは、IDが1274,1353,1418,2455,3026のすべてのエントリを見つけることができますが、5637を見つけることはできません。
  • そのエントリには完全な停止があるためです。重複しているとはみなされない。
  • 期待される結果は、よく知られていないものを引き込むことです。
  • bank_statementが異なるため、idが2787のban_statementは無視する必要があります。
+0

更新が – scaisEdge

+0

私は@scaisEdge –

+0

あなたも重複末尾にピリオド(ドット)で行としてカウントしたい、より良い説明し、それらを追加していますか? – scaisEdge

答えて

1

TRIM(TRAILING '。' FROM your_column);を使用できます。あなたは適切なデータサンプルと期待される結果と疑問

SELECT * 
FROM sds_bank_phrases 
INNER JOIN (Select TRIM(TRAILING '.' FROM bank_statement) as clean_bank_statement 
FROM sds_bank_phrases GROUP BY bank_statement HAVING COUNT(TRIM(TRAILING '.' FROM bank_statement)) > 1) dup 
    ON TRIM(TRAILING '.' FROM sds_bank_phrases.bank_statement) = dup.clean_bank_statement; 
+0

いいえTRIM(TRAILINF '。' FROM bank_statement) –

+0

TRIM(TRAILING)を使用している場合、予期しないTEXT_STRINGが発生します。タイプエラー –

+0

はい.. TRAILING ...誤字..答えが更新されました。 – scaisEdge

関連する問題