ホーム > 未分類 > MySQLのGROUP BYは、寛容すぎて気持ちが悪い。

MySQLのGROUP BYは、寛容すぎて気持ちが悪い。

以前の職場ではOracleばかり使っていたのですが、MySQLを使うようになってちょっとカルチャーショック、というお話。

以下のようなテーブルがあってですよ、

mysql> SELECT table_a.* FROM table_a;
+-------+-------+-------+
| col_a | col_b | col_c |
+-------+-------+-------+
|     1 |     1 |     1 | 
|     2 |     1 |     2 | 
|     3 |     2 |     2 | 
|     4 |     2 |     1 | 
+-------+-------+-------+
4 rows in set (0.00 sec)

以下のように、GROUP BYに含まれない列でもSELECTできちゃうんですね。

mysql> SELECT col_b, col_c FROM table_a GROUP BY col_b;
+-------+-------+
| col_b | col_c |
+-------+-------+
|     1 |     1 | 
|     2 |     2 | 
+-------+-------+
2 rows in set (0.00 sec)

col_cの値はどれがSELECTされるのだろう…。物理的な先頭行の値?

Oracleだとたしか構文エラーになったよなーなんて思っていたのですが、ちゃんと「MySQLによる拡張です」って書いてありました。
本家ドキュメント:MySQL extends the use of GROUP BY…

前述のようなケースは「やっちゃだめ」とも書いてありますね。

Do not use this feature if the columns you omit from the GROUP BY part are not constant in the group.

さらに環境変数 sql_modeONLY_FULL_GROUP_BY を設定すれば、この拡張は抑制されるみたい。

mysql> SET sql_mode = 'ONLY_FULL_GROUP_BY';
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT col_b, col_c FROM table_a GROUP BY col_b;
ERROR 1055 (42000): 'database_a.table_a.col_c' isn't in GROUP BY

あいまいなSQLを未然に防止するためには、設定しておいた方がいい気がする…。

カテゴリー: 未分類 タグ:
  1. 2020 年 4 月 2 日 04:02 | #1

    cam sex bestonlinesexcams1 sex cam 2016.

  2. 2020 年 4 月 2 日 07:47 | #2

    Everyone loves it whenever people come together and share ideas. Great blog, continue the good work!

  3. 2020 年 4 月 2 日 10:23 | #3

    asian cam girls hotcamgirls1.com naked girls web cam.

  4. 2020 年 4 月 2 日 11:36 | #4

    Right here is the right webpage for anyone who wants to find out about this topic. You know a whole lot its almost hard to argue with you (not that I personally would want to…HaHa). You certainly put a fresh spin on a topic that has been discussed for decades. Wonderful stuff, just excellent.

  5. 2020 年 4 月 2 日 14:09 | #5

    cam girl chat cam girl chubby cam girl.

  6. 2020 年 4 月 2 日 14:17 | #6

    chaturbate model [url=https://camgirls1.com]best cam girls [/url] cam girl ass.
    lesbian cam girls [url=https://hotcamgirls1.com]hottest cam girls [/url] cam girl orgasm.
    adult sex cam [url=https://bestonlinesexcams1.com]sex cam app [/url] indian cam sex.
    hd sex cam [url=https://bestonlinesexwebcams.com]live lesbian sex cam [/url] high school hidden cam sex.
    best webcam sites [url=https://adultfreewebcamsites.com]sex webcam sites [/url] amateur cam sites.
    other ebony cam sites [url=https://adultcamsites1.com]adultcamsites1.com[/url] cam sites for android.

  7. 2020 年 4 月 2 日 15:36 | #7

    rabbit cam sex [url=https://bestonlinesexwebcams.com]bestonlinesexwebcams.com[/url] granny sex cam.

  8. 2020 年 4 月 2 日 16:08 | #8

    [url=http://clonidine24.com/]clonidine 2 mg price[/url] [url=http://amitriptylineelavil.com/]amitriptyline 10 mg tablet[/url] [url=http://azithromycinz.com/]antibiotic azithromycin[/url] [url=http://zithromax911.com/]can you buy zithromax over the counter in australia[/url] [url=http://tamoxifencit.com/]buy tamoxifen online[/url] [url=http://elavilamitriptyline.com/]buy elavil[/url] [url=http://medrol80.com/]medrol pill[/url] [url=http://benicarhctz.com/]benicar 40 mg prices[/url] [url=http://furosemide2017.us.com/]furosemide 20mg[/url] [url=http://citalopramhbr.com/]citalopram 20 mg for anxiety[/url] [url=http://albenza200.com/]albenza for parasites[/url] [url=http://prednisone365.us.com/]prednisone 10mg[/url] [url=http://sildenafilcitrate100mg.us.com/]sildenafil 100mg tablets[/url] [url=http://zithromaxtab.com/]where can you buy zithromax[/url] [url=http://cytotec100.com/]cytotec 200 mcg price[/url] [url=http://zithromax250.com/]buying zithromax[/url] [url=http://zithromaxpak.com/]zithromax z-pak[/url] [url=http://azithromycinotc.com/]azithromycin 300 mg[/url] [url=http://furosemide365.us.com/]buy generic furosemide[/url] [url=http://effexorer.com/]effexor prescription pills[/url]

コメントページ
1 2 3 71
  1. 2014 年 8 月 7 日 19:23 | #1