2017-10-11 11 views
1

phoneBoxRecordIDと一致するすべてのレコードをphoneBox DBに戻したいとします。一致する値を持つレコードを列に見つけよう

SELECT * FROM phoneBox where phoneBoxRecordIDs MATCH 

返します:

Id phoneBoxRecordIDs colour 
4 492948   Blue 
9 492948   Brown 
27 492948   Pink 
+0

私は互換性のないデータベースタグを削除しました。実際に使用しているデータベースにタグを付けます。また、何にマッチする? –

+0

私はやりたいことの例ですが、それを行う方法がわかりませんphoneBoxRecordIDs列に格納されている値が同じ列に格納されている他の値と一致するphoneBoxテーブルのすべてのレコードを返したい – John

+0

WHERE句でネストされたSELECT文を使用する必要があるように思えます。 –

答えて

1

あなたは可能性があり、カウント> 1、 しかし、これが唯一のそのID

SELECT Count(*) [Count] , phoneBoxRecordIDs FROM phoneBox Group By phoneBoxRecordIDs Having Count(*) > 1

でphoneboxrecordidとレコードの#を返すフィールドでグループ
+0

あなたは明示的に結合を宣言しなければなりません...プリミティブスタイルはすぐに廃止されます – maSTAShuFu

0

phoneBoxRecordIDsが複数回表示されるようにするには、ANSI標準の方法でウィンドウ関数を使用します。

select pb.* 
from (select pb.*, count(*) over (partition by phoneBoxRecordIDs) as cnt 
     from phoneBox 
    ) pb 
where cnt > 1 
order by phoneBoxRecordIDs; 

また、一致するレコードが存在する場合にのみ返す記録によってこれを行うことができます:

select pb.* 
from phoneBox pb 
where exists (select 1 
       from phoneBox pb2 
       where pb2.phoneBoxRecordIDs = pb.phoneBoxRecordIDs and 
        pb2.id <> pb.id 
      ); 
関連する問題