2017-04-03 10 views
0

私はMySQLでDISTINCTを最初に実行しなければならないのはなぜですか?

SELECT DISTINCT(table.field.id), 1 FROM ... 

を行うときに動作しますが、私は

SELECT 1, DISTINCT(table.field.id) FROM ... 

を行うときに失敗したクエリを持っているが、これは既知の動作ですか?

なぜ、最初のものは2番目のものが動作しないのですか?

+11

「DISTINCT」は機能ではありません。 SELECT DISTINCTはSQL言語の節です。 'SELECT DISTINCT'は、節の全ての*列に適用されます。 –

+1

「DISTINCT」は「重複行を除去する」ことを意味します。列レベルでは意味をなさない。これは、[SELECTと選択された式のリストの間に](https://dev.mysql.com/doc/refman/5.7/en/select.html)とどまる理由です。タイトルの質問に答えるには:[SELECT'の文書(https://dev.mysql.com/doc/refman/5.7/en/select.html)がそう言っているからです。 – axiac

答えて

1

残念ながら私はまだコメントを追加できません。

@Gordon Linoffが書いたものはまさに正しいものです。 DISTINCTが一般的にSELECTの部分またはAGGREGATEの一部として機能しているとエラーが表示されます。結果セットから一意の行を戻すために使用され、集約関数内で一意の列値を強制的に使用するために使用できます。

例:SELECT DISTINCT * ...COUNT(DISTINCT COLUMN)SUM(DISTINCT COLUMN).

詳しい情報は、人気のDBエンジンでは約DISTINCTです:

関連する問題