2011-11-25 22 views
-1

複製します。 (1 - lは=残し、R =削除だけで、私は2つのテーブルを持って、IDS

  • 1を削除します。それは役立ちますが、それは私の問題を解決していません:

    SELECT a.id AS id, count(b.job_id) AS cnt, b.property_working_time AS value 
    FROM job a 
    INNER JOIN job_working_time b ON a.id = b.job_id 
    GROUP BY b.job_id 
    HAVING cnt >1 
    

    私は唯一の重複、例えばとIDについて、重複を削除したいですL)

  • 1 - 1(R)
  • 1 - 2(L)
  • 1 - 3(L)
  • 1 - 1(R)
  • 2から1(リットル)
  • 2から1(R)
  • 2から2(L)事前

    [あとで編集]あなたが考慮すべき 一つで

ありがとう:とにかく 、私はIDを削除するには、それのすべての値を削除します。だから、アイデアはそのIDのすべての値を保持することです、後で私は重複なしで追加することができます。そのため、IDと値の両方を取得することは重要ですが、コンテンツは重複しません。 SQLは、上記のすべての(l)値を返す必要があります。リスト。

答えて

1

あなたの例では、任意の行が

DISTINCTあなた

それが選択完全diffirent行

SELECT DISTINCT a.id AS id, count(b.job_id) AS cnt, b.property_working_time AS value 
FROM job a 
INNER JOIN job_working_time b ON a.id = b.job_id 
GROUP BY b.job_id 
HAVING cnt >1 

編集のために働くだろうと同じことしたくないように見えるので:

例を追加

http://data.stackexchange.com/stackoverflow/q/119267/

+0

同じIDに対して異なる値を失いたくない場合は、値が重複します。 SelectはIDのすべての値を返しますが、値は重複しません。 – danielpopa

+0

あなたは別の完全なdiffirentの行を失うことはありません、それは列のdiffirentのいずれかが選択されている場合は、 "完全な行が同じです"を確認します –

+0

あなたのSQLを試してみましたか?私はあなたの興味のために無礼になりたくはありませんが、DISTINCTは私の場合は助けになりません。 – danielpopa

0

まず/簡単なクエリ:

SELECT instr(s,mid(s,',')+1) from (
SELECT group_concat(id) s, count(*) c from ... group by field having c >1)z 

とエンド::IDを削除してもらうためにmodifed

SELECT id, field, count(*) c from ... group by field having c >1 

2番目のクエリ、

Delete FROM ... WHERE id in (...) 

は醜いです、高速です(ミッドファンクションのパフォーマンスは(...)にないよりも速いです)。

+0

同じidに対して2つの異なる値がある場合、解は最初の値を失います(詳細は後で確認してください) – danielpopa

関連する問題