2017-01-27 2 views
0

私は、私の疑問はここでFLD1前に適用DISTINCTキーワードであるロジックは明らかではない

SELECT DISTINCT FLD1, FLD2, FLD3, FLD4 FROM    
TBL1 WHERE FLD1 = 'MFG' AND FLD2 = '1' 

以下のようにSQLコードに遭遇してきました。 FLD1 = 'MFG'のレコードのみを選択するフィルタ条件があります。違いはそこに何か違いはありますか?

私はDISTINCTなしで同じSQLを実行しており、取得されたレコードの数はDISTINCTと同じです。

これは、iSeriesのDB2データベース用に書かれています。

+1

'distinct'が適用される選択リスト内のすべての** **列だけではなく、最初の1 –

+1

これが答えです私は期待していました。したがって、フィールドFLD1、FLD2、FLD3、FLD4の値が同じ複数のレコードがある場合、レコードは1つだけ選択されます。これはSELECT FLD1、FLD2、FLD3、FLD4から TBL1 WHERE FLD1 = 'MFG' AND FLD2 = '1' GROUP BY FLD1、FLD2、FLD3、FLD4に相当します –

答えて

3

すべての重複レコードを削除し、一意のレコードのみをフェッチします。

例:

表員

Id  Name  Salary 
1  Alex  2000 
2  Alxender 1000 
3  Paul  2000 
4  Alex  2000 
select distinct Salary 
from Employees; 

それが返す:

Salary 
2000 
1000 
select distinct Name,Salary 
from Employees; 

を戻します

Name  Salary 
Alex  2000 
Alxender 1000 
Paul  2000 

クエリ:

select distinct Salary,Name 
from Employees 
where salary = 2000; 

が返されます:

Name  Salary 
Alex  2000  
Paul  2000 
+0

申し訳ありません。あなたは、FLD1、FLD2、FLD3、FLD4の固有の組み合わせごとに1つのレコードだけが引かれると言っていますか? –

+0

それは各列から重複した値を削除します – kritikaTalwar

+0

申し訳ありませんが、あなたが言っているものは間違っていますと思う –

関連する問題