5

これの間にパフォーマンスまたはその他の違いはありますか:

SELECT distinct(users.id),2 as someFieldName ,0 as someOtherFieldName
From users join ...

この:

SELECT distinct users.id ,2 as someFieldName ,0 as someOtherFieldName
From users join ...

結果セットは挿入ステートメントの一部として使用され、選択は結合のために同じユーザー ID を複数回返す可能性があります (ここには表示されていません)。

私はmysqlを使用しています。

4

2 に答える 2

6

「明確な分野」というものはありません。最初の構文は2番目の構文と同じように解析されます。括弧は単にフィールド式を囲んでいます。次のように書くこともできます。

SELECT DISTINCT (users.id), (2) AS someFieldName, (0) AS someOtherFieldName

それらはすべて同等です。

定数列での比較を避けたい場合は、代わりに次を使用できますGROUP BY

SELECT   users.id, 2 AS someFieldName, 0 AS someOtherFieldName
FROM     users JOIN ...
GROUP BY users.id
于 2012-10-24T08:15:26.393 に答える
5

DISTINCTこのコンテキストでは行に対してのみ動作するため、違いはありません。

SELECTドキュメントから

ALLおよびDISTINCTオプションは、重複する行を返すかどうかを指定します。ALL(デフォルト)は、重複を含め、一致するすべての行を返す必要があることを指定します。DISTINCTは、結果セットから重複行を削除することを指定します。両方のオプションを指定するとエラーになります。DISTINCTROWは、DISTINCTの同義語です。

于 2012-10-24T08:15:41.980 に答える