私はDISTINCT
キーワードでいくつかの実験を行いましたが、いくつかの特定の状況が私の注意を引いた。節または関数としてのDISTICNC
まず第一に、私は例えば、DISTINCT
でいくつかの括弧を置くことができることに気づい:
SELECT DISTINCT(NAME, SURNAME) FROM EMPLOYEE;
は私にエラーを与えながら
SELECT DISTINCT(NAME) FROM EMPLOYEE;
は、okです。どうして?
このような操作を許可する感覚は何ですか?
SELECT DISTINCT(NAME), COUNT(SURNAME) FROM EMPLOYEE;
「このような操作を許可する感覚は何ですか?」何もない。標準SQLは 'DISPLNCT'の有無にかかわらず' SELECT NAME、COUNT(SURNAME)FROM EMPLOYEE; 'を許可しません。 –
'(NAME) 'は' NAME'と等しくなります。余分なカッコを追加した列名です。 '(a = 1 or b = 2)、c = 3'のように)読みやすさや演算子の優先順位のために式のまわりの括弧を使うことができるので、これは許されています。 'NAME、SURNAME'は式ではないので、そのまわりの括弧を使うと構文エラーになります。 –
「名前を選択(名前)、人数から(名前)」を選択するのは本当に意味がありません。 ONLY_FULL_GROUP_BYモードではないので、DBMSにあなたが何をしているかを完全に知っていると伝えますが、あなたはそうではないようです:-)クエリは、あなたから任意に選択された名前を含む1つの結果行を与えますテーブルにテーブル内のnull以外の姓の数を加えたものです。次に、その1行に 'DISTINCT'を適用します: - |行の集約をマスターするまで、DBMSをONLY_FULL_GROUP_BYモードに設定することをお勧めします。 –