1

SELECT a,b from <table_name> GROUP BY a,b,c

上記は有効なSQLステートメントですか?

4

5 に答える 5

4

テーブル名がないわけではありません。テーブル名があれば有効ですが、おそらくあまり役​​に立ちません。

通常、GROUP BY句をいくつかの集計関数(SUM、COUNT、MAX、MINなど)と組み合わせて使用​​して、グループ化されたフィールドに関連するいくつかの値を導出します。

于 2012-08-06T22:03:44.673 に答える
2

テーブル名を含める場合、選択されていない要素でグループ化できるかどうかを尋ねていると思います c. はい、できます。

于 2012-08-06T22:08:09.763 に答える
2

はい、そのクエリは正当な SQL です。それが有用なSQL であるかどうかは、まったく別の問題です。

クエリ

select a , b
from foo
group by a,b,c

次のことを行います。

  • aソース テーブルの行を個別のグループにグループ化し、列の一意の組み合わせごとに 1 と をグループ化しbますc
  • このような各グループは、グループ化列とクエリで必要な集計関数の値を含む 1 つの行に折りたたまれます。
  • 結果セットは呼び出し元に返され、不要な列 (この場合は column c) が破棄されます。

グループ化列の 1 つが破棄されるため、指定されたクエリが一意の行のセットであるとは限りません。重複が含まれている可能性があります。たとえば、group byこれらのグループが返されると思いついた場合:

A  B  C
-  -  -
0  0  0
0  0  1
0  1  0
0  1  1
1  0  0
1  0  1
1  1  0
1  1  1

クエリによって返される結果セットは次のようになります。

A  B
-  -
0  0
0  0
0  1
0  1
1  0
1  0
1  1
1  1

したがって、必ずしも役立つとは限りません。

于 2012-08-06T23:22:15.837 に答える
1

いいえ-テーブルが必要です。

SELECT a,b FROM myTable GROUP BY a,b,c

ここで、myTableは、選択するテーブルです(列a、b、およびcが必要です)。

于 2012-08-06T22:04:03.043 に答える
0

いいえ-テーブル名を指定しなかったためです。持っていた場合は、はい、それは確かにmysqlには有効ですが、Oracleについてはわかりません(これはGROUPingを非常に異なる方法で検証します)。でも意味ない…。

a  b  c
0  0  0
0  0  1
0  1  0
0  1  1

上記のテーブルにクエリを適用すると、次のようになります。

0 0 
0 0
0 1
0 1

そして、それがどのように意味のある結果になるかわかりません-集計値が必要ない場合は、 DISTINCT の方が理にかなっていますが、異なる結果が得られます:

SELECT DISTINCT a, FROM `atable` 

0 0
0 1

質問をした本当の理由を説明していただければ、より賢明な回答を試みることができるかもしれません。

于 2012-08-06T22:08:05.373 に答える