sql >> データベース >  >> RDS >> Sqlserver

sqlgroupbyとdistinct

    GROUP BY 特定のの個別の値ごとに、行のグループを1つの行にマップします 列。必ずしも選択リストに含まれている必要はありません。

    SELECT b, c, d FROM table1 GROUP BY a;
    

    このクエリは正当なSQLです(修正: MySQLのみ。実際には、標準のSQLではなく、他のブランドではサポートされていません)。 MySQLはそれを受け入れ、bを選択して、自分が何をしているかを知っていると信頼します。 、c 、およびd aの機能依存性であるため、明確な方法で 。

    ただし、Microsoft SQL Serverおよびその他のブランドでは、機能の依存関係を簡単に判断できないため、このクエリは許可されていません。 編集: 代わりに、標準SQLでは単一値ルールに従う必要があります つまり、選択リストのすべての列は、GROUP BYで名前を付ける必要があります 節または集合関数の引数になります。

    一方、DISTINCT 常に選択リスト内のすべての列を調べ、それらの列のみを調べます。 DISTINCTというのはよくある誤解です 列を指定できます:

    SELECT DISTINCT(a), b, c FROM table1;
    

    DISTINCTを作成する括弧にもかかわらず 関数呼び出しのように見えますが、そうではありません。これはクエリオプションであり、選択リストの3つのフィールドのいずれかに個別の値があると、クエリ結果に個別の行が表示されます。この選択リストの式の1つには括弧が付いていますが、これは結果に影響しません。



    1. SQLServerのID列の増分値を返します

    2. SQL Server(T-SQL)で現在のログイン名を返す

    3. Androidアプリケーション内でSQLiteクエリを実行するにはどうすればよいですか?

    4. ユーザー'root'@'localhost'のアクセスが拒否されました(パスワードを使用:YES)-権限がありませんか?