C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 172 を表示中)
■99160 / )  SQLレコード内の重複チェック
□投稿者/ OA (1回)-(2022/02/13(Sun) 22:52:43)

分類:[データベース全般] 

【環境】SQL Server(SSMS v18.6)

SQLについて、教えてください。

{1~N}の組み合わせを求めるのに、N個のテーブルをクロス結合しました。
こちらは、簡単にできたのですが、今度は順列を求めようと以下のSQLを考えたのですが、
{1~4}、{1~5}と組み合わせが増えるとWHERE句が冗長な表現になります。
WHERE句を、もっと簡単な表現で書けないでしょうか?

{1~3}(↓のTable1)なら
SELECT * FROM Table1 WHERE A<>B AND A<>C AND B<>C ORDER BY A, B, C
このWHERE句が
{1~4}なら
WHERE A<>B AND A<>C AND A<>D AND B<>C AND B<>D AND C<>D
{1~5}なら
WHERE A<>B AND A<>C AND A<>D AND A<>E AND B<>C AND B<>D AND B<>E AND C<>D AND C<>E AND D<>E
と爆発的に増加する。


以下は{1,2,3}の組み合わせ27通りのテーブル(Table1)です。
この中から順列の6通り(○印)を抽出する。
(要はレコード内に1つでも重複があれば抽出しない。)


Table1
      
   A   B   C    
├─┼─┼─┤    
│ 1│ 1│ 1│    
├─┼─┼─┤    
│ 1│ 1│ 2│    
├─┼─┼─┤    
│ 1│ 1│ 3│    
├─┼─┼─┤    
│ 1│ 2│ 1│    
├─┼─┼─┤    
│ 1│ 2│ 2│    
├─┼─┼─┤    
│ 1│ 2│ 3│○  
├─┼─┼─┤    
│ 1│ 3│ 1│    
├─┼─┼─┤    
│ 1│ 3│ 2│○  
├─┼─┼─┤    
│ 1│ 3│ 3│    
├─┼─┼─┤    
│ 2│ 1│ 1│    
├─┼─┼─┤    
│ 2│ 1│ 2│    
├─┼─┼─┤    
│ 2│ 1│ 3│○  
├─┼─┼─┤    
│ 2│ 2│ 1│    
├─┼─┼─┤    
│ 2│ 2│ 2│    
├─┼─┼─┤    
│ 2│ 2│ 3│    
├─┼─┼─┤    
│ 2│ 3│ 1│○  
├─┼─┼─┤    
│ 2│ 3│ 2│    
├─┼─┼─┤    
│ 2│ 3│ 3│    
├─┼─┼─┤    
│ 3│ 1│ 1│    
├─┼─┼─┤    
│ 3│ 1│ 2│○  
├─┼─┼─┤    
│ 3│ 1│ 3│    
├─┼─┼─┤    
│ 3│ 2│ 1│○  
├─┼─┼─┤    
│ 3│ 2│ 2│    
├─┼─┼─┤    
│ 3│ 2│ 3│    
├─┼─┼─┤    
│ 3│ 3│ 1│    
├─┼─┼─┤    
│ 3│ 3│ 2│    
├─┼─┼─┤    
│ 3│ 3│ 3│    
└─┴─┴─┘   

返信 編集キー/


管理者用

- Child Tree -