时间: 2020-09-4|tag:14次围观|0 条评论

GROUP BY 语法

SELECT statements... GROUP BY column_name1[,column_name2,...] [HAVING condition];

实例

mysql> SELECT gender FROM members;+--------+| gender |+--------+| Female || Female || Male   || Female || Male   || Male   || Male   || Male   || Male   || Male   || Male   || Male   || Male   || Male   |+--------+14 rows in set (0.00 sec)mysql> SELECT gender FROM members GROUP BY gender;+--------+| gender |+--------+| Female || Male   |+--------+2 rows in set (0.00 sec)mysql> SELECT category_id,year_released FROM movies GROUP BY category_id,year_released;+-------------+---------------+| category_id | year_released |+-------------+---------------+|        NULL |          2008 ||        NULL |          2010 ||        NULL |          2012 ||           1 |          2011 ||           2 |          2008 ||           6 |          2007 ||           7 |          1920 ||           8 |          1920 ||           8 |          2005 ||           8 |          2007 |+-------------+---------------+10 rows in set (0.00 sec)mysql> SELECT gender,COUNT(membership_number)  FROM members GROUP BY gender;+--------+--------------------------+| gender | COUNT(membership_number) |+--------+--------------------------+| Female |                        3 || Male   |                       11 |+--------+--------------------------+2 rows in set (0.00 sec)mysql> SELECT * FROM movies GROUP BY category_id,year_released HAVING category_id = 8;ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'myflixdb.movies.movie_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_bymysql> SELECT category_id,year_released FROM movies GROUP BY category_id,year_released HAVING category_id = 8;+-------------+---------------+| category_id | year_released |+-------------+---------------+|           8 |          1920 ||           8 |          2005 ||           8 |          2007 |+-------------+---------------+3 rows in set (0.00 sec)

转义与模糊匹配

  • 语法
SELECT statements... WHERE fieldname LIKE 'xxx%';
  • 实例
mysql> SELECT * FROM movies WHERE title LIKE '%code%';+----------+-----------------+------------+---------------+-------------+| movie_id | title           | director   | year_released | category_id |+----------+-----------------+------------+---------------+-------------+|        4 | Code Name Black | Edgar Jimz |          2010 |        NULL ||        7 | Davinci Code    | NULL       |          2007 |           6 |+----------+-----------------+------------+---------------+-------------+2 rows in set (0.00 sec)mysql> SELECT * FROM movies WHERE title LIKE '%code';+----------+--------------+----------+---------------+-------------+| movie_id | title        | director | year_released | category_id |+----------+--------------+----------+---------------+-------------+|        7 | Davinci Code | NULL     |          2007 |           6 |+----------+--------------+----------+---------------+-------------+1 row in set (0.00 sec)mysql> SELECT * FROM movies WHERE title LIKE 'code%';+----------+-----------------+------------+---------------+-------------+| movie_id | title           | director   | year_released | category_id |+----------+-----------------+------------+---------------+-------------+|        4 | Code Name Black | Edgar Jimz |          2010 |        NULL |+----------+-----------------+------------+---------------+-------------+1 row in set (0.02 sec)mysql> SELECT * FROM movies WHERE year_released LIKE '200_';+----------+--------------------------+------------------+---------------+-------------+| movie_id | title                    | director         | year_released | category_id |+----------+--------------------------+------------------+---------------+-------------+|        2 | Forgetting Sarah Marshal | Nicholas Stoller |          2008 |           2 ||        3 | X-Men                    | NULL             |          2008 |        NULL ||        5 | Daddy's Little Girls     | NULL             |          2007 |           8 ||        6 | Angels and Demons        | NULL             |          2007 |           6 ||        7 | Davinci Code             | NULL             |          2007 |           6 ||        9 | Honey mooners            | John Schultz     |          2005 |           8 |+----------+--------------------------+------------------+---------------+-------------+6 rows in set (0.00 sec)mysql> SELECT * FROM movies WHERE title LIKE 'cod_';Empty set (0.00 sec)mysql> SELECT * FROM movies WHERE title LIKE 'cod_%';+----------+-----------------+------------+---------------+-------------+| movie_id | title           | director   | year_released | category_id |+----------+-----------------+------------+---------------+-------------+|        4 | Code Name Black | Edgar Jimz |          2010 |        NULL |+----------+-----------------+------------+---------------+-------------+1 row in set (0.00 sec)mysql> SELECT * FROM movies WHERE year_released NOT LIKE '200_';+----------+---------------------------+----------------+---------------+-------------+| movie_id | title                     | director       | year_released | category_id |+----------+---------------------------+----------------+---------------+-------------+|        1 | Pirates of the Caribean 4 |  Rob Marshall  |          2011 |           1 ||        4 | Code Name Black           | Edgar Jimz     |          2010 |        NULL ||       16 | 67% Guilty                | NULL           |          2012 |        NULL ||       17 | The Great Dictator        | Chalie Chaplie |          1920 |           7 ||       19 | movie 3                   | John Brown     |          1920 |           8 ||       22 | movie 3                   | John Brown     |          1920 |           8 ||       23 | movie 3                   | John Brown     |          1920 |           8 |+----------+---------------------------+----------------+---------------+-------------+7 rows in set (0.01 sec)mysql> SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';+----------+------------+----------+---------------+-------------+| movie_id | title      | director | year_released | category_id |+----------+------------+----------+---------------+-------------+|       16 | 67% Guilty | NULL     |          2012 |        NULL |+----------+------------+----------+---------------+-------------+1 row in set (0.00 sec)mysql> SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';+----------+------------+----------+---------------+-------------+| movie_id | title      | director | year_released | category_id |+----------+------------+----------+---------------+-------------+|       16 | 67% Guilty | NULL     |          2012 |        NULL |+----------+------------+----------+---------------+-------------+1 row in set (0.00 sec)

正则表达式

  • 语法
SELECT * FROM `movies` WHERE `title` REGEXP 'code';
  • 实例
mysql> SELECT * FROM movies WHERE title REGEXP '^[abcd]';+----------+----------------------+------------+---------------+-------------+| movie_id | title                | director   | year_released | category_id |+----------+----------------------+------------+---------------+-------------+|        4 | Code Name Black      | Edgar Jimz |          2010 |        NULL ||        5 | Daddy's Little Girls | NULL       |          2007 |           8 ||        6 | Angels and Demons    | NULL       |          2007 |           6 ||        7 | Davinci Code         | NULL       |          2007 |           6 |+----------+----------------------+------------+---------------+-------------+4 rows in set (0.00 sec)mysql> SELECT * FROM movies WHERE title REGEXP '^[^abcd]';+----------+---------------------------+------------------+---------------+-------------+| movie_id | title                     | director         | year_released | category_id |+----------+---------------------------+------------------+---------------+-------------+|        1 | Pirates of the Caribean 4 |  Rob Marshall    |          2011 |           1 ||        2 | Forgetting Sarah Marshal  | Nicholas Stoller |          2008 |           2 ||        3 | X-Men                     | NULL             |          2008 |        NULL ||        9 | Honey mooners             | John Schultz     |          2005 |           8 ||       16 | 67% Guilty                | NULL             |          2012 |        NULL ||       17 | The Great Dictator        | Chalie Chaplie   |          1920 |           7 ||       19 | movie 3                   | John Brown       |          1920 |           8 ||       22 | movie 3                   | John Brown       |          1920 |           8 ||       23 | movie 3                   | John Brown       |          1920 |           8 |+----------+---------------------------+------------------+---------------+-------------+9 rows in set (0.00 sec)

文章转载于:https://www.jianshu.com/p/10dab5d60c28

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《sql教程6分组、转义与模糊匹配、正则表达式
   

还没有人抢沙发呢~