
以下のようなテーブルからc列とd列のデータが重複しているレコードを取得したいために、以下のSQLを試してみました。
a列|b列|c列|d列
---|---|---|---
01 |01 |01 |01
02 |01 |01 |01
03 |02 |01 |03
04 |02 |02 |03
05 |01 |01 |02
06 |02 |02 |03
select * from テスト
where c in (select c from テスト group by c,d having count(*)>1)
and d in (select d from テスト group by c,d having count(*)>1)
そうしたところ、以下の結果になってしまいました。
想定では、○のレコードだけ抽出できると思ったのです。
×のレコードを抽出したくないのですが、SQLのどこが
間違っているのでしょうか?
a列|b列|c列|d列
---|---|---|---
01 |01 |01 |01 ○
02 |01 |01 |01 ○
03 |02 |01 |03 ×
04 |02 |02 |03 ○
06 |02 |02 |03 ○
(使用DB)SQLServer2000
No.2ベストアンサー
- 回答日時:
>SQLのどこが間違っているのでしょうか?
最初の条件では、c列の値が01、02がヒットします。
二つ目の条件では、d列の値が、01、03がヒットします。
これにより、c列=01 & d列=03の行もヒットしてしまいます。
つまり、c列の値とd列の値の組で、「2件以上あるもの」という条件になっていません。
以下にSQL例を示します。
select * from t1 x
where exists
(select * from t1 where x.c=c and x.d=d group by c,d having count(*)>1)
No.1
- 回答日時:
スーツのデザイナーでプログラマではありません。
一応、SQL Server に次に SQL文を発行しフォームに表示して確認しています。
ミスの可能性もあります。
検証して下さい。
select * from Table1
where str(Cc) + str(DD) in (select str(CC) + str(DD) from Table1 group by CC,DD having count(*)>1)
ID aa bb cc dd
1 1 1 1 1
2 2 1 1 1
3 3 1 1 3
4 4 2 2 3
5 5 1 1 2
6 6 2 2 3
一応、これで!
No.|ID|aa|bb|cc|dd|
1| 1|1 |1 |1 |1 |
2| 2|2 |1 |1 |1 |
3| 4|4 |2 |2 |3 |
4| 6|6 |2 |2 |3 |
CC+DD が重複しているか否かに条件を訂正したつもりです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Oracle 列1と列2の関係性で列3の条件に一致するレコードを抽出したい 1 2022/04/13 07:46
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
SQLで列名を変数にできないでし...
-
UPDATE文のWHERE条件に他のテー...
-
SQLによる"あいうえお"順でソー...
-
エクセルでワイルドカード検索...
-
Access:クエリーにて集計後に...
-
列のヘッダーを含めるのをデフ...
-
列番号による項目の取得について
-
特定の文字列で列を区切るには?
-
Accessのリストボックスについて
-
SQLを使用しての、異なるURLの...
-
Excel の簡単な操作について
-
SQLで一時的に表示変更するには...
-
SQL文の関数らしいのですが、意...
-
ふと疑問
-
【VB.NET】日付型の列にNULLを...
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
-
エクセルで最後の文字だけ置き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
UPDATE文のWHERE条件に他のテー...
-
SQLで列名を変数にできないでし...
-
列のヘッダーを含めるのをデフ...
-
列番号による項目の取得について
-
【VB.NET】日付型の列にNULLを...
-
Access:クエリーにて集計後に...
-
テーブル列数とデータファイル...
-
SQLによる"あいうえお"順でソー...
-
Accessでの全データから空白削除
-
特定の列だけをGROUP BYしたい時
-
項目名に大文字と小文字の混在...
-
特定の文字列で列を区切るには?
-
エクセルの列見出しが飛んでいます
-
Oracle8でテーブルの列名を変更...
-
複数列の最大値を求めたい
-
”+”の符号をつける方法
-
IDENTITY列の更新で失敗する
-
SELECT文で列名指定して桁あわ...
おすすめ情報