2016-09-15 3 views
0

私はSQLで新しいです。 「私は開始とファイル名を返すと、共通の列を停止したいと名前が似ている複数の列が同じSQL検索値

  filename    | start   | stop 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 

:私はとt_table持っている共通

で複数の列を持つ値を返すクエリを持っていると思います%AAAA% '(最初の2行目) CCCC%は開始と終了が同じですが、名前は'%AAAA% 'と似ていません。

私はこれらの回答で試しましたが、結果を期待できませんでした。 :

SELECT filename , 
     start 
FROM t_table 
WHERE (start IN (SELECT start 
        FROM t_table 
        GROUP BY start 
        HAVING COUNT(*) > 1)) 
     AND (filename LIKE '%AAAA%'); 

私は...

  filename    | start   | stop 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 

の代わりにそれらのすべてを取得しました:

  filename    | start   | stop 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB | 2016-12-24 00:00:00 | 2016-01-03 00:00:00 

をあなたは私を助けていただけますか?ここ

+2

は、あなたが期待される出力と一緒に多くのサンプルデータを表示する必要がありますが、いずれにしても、私は以下の答えを試みました。 –

+0

長くて退屈なファイル名で問題を説明できますか? – Strawberry

答えて

3
SELECT t1.filename, 
     t1.start, 
     t1.stop 
FROM t_table t1 
INNER JOIN 
(
    SELECT start, stop   -- this subquery identifies all start, stop 
    FROM t_table     -- pairs for which 2 or more records share 
    GROUP BY start, stop   -- those values 
    HAVING COUNT(*) > 1 
) t2 
    ON t1.start = t2.start AND 
     t1.stop = t2.stop 
WHERE t1.filename LIKE '%AAAA%' -- filename contains 'AAAA' 

デモ:

SQLFiddle

+0

ありがとうございますが、私はまだそれらの3つを持っています... – ali

+0

@aliフィドルを確認してください。私は3つではなく、私のクエリから2つのレコードを取得します。 –

+0

あなたは正しいです。ありがとうございました :) – ali

関連する問題