133 MySQLの単一テーブルのクエリ

まず、単一テーブルのクエリ

1.1構文

  • いくつかのレコードは、各チェックアウト、彼らはテーブルですが、このテーブルはメモリの存在であります
  • あなたは、レコードの二次使用を照会したい場合は、ニックネームを記録するために、これらのテーブルをチェックアウトすることができます
  • 次のように表示データの一部のレコードのルックアップテーブルは、我々は、テーブル内のフィールド名から取り出し、そして時にチェック直接エイリアスとしてフィールドの後ろに設定することができます
select ditinct 字段1 as 别名1,字段2 as 别名2,···· from 表名
                                where 条件
                                group by 字段名
                                having 筛选
                                order by 字段名
                                limit 限制条数

1.2キーの優先順位

from : 找到表
where : 拿着where 后面的约束的条件,去表/文件中取出一些记录
group by : 将取出的某些记录进行分组,如果没有group by,则整体作为一组
select : 执行select
distinct : 对去取出的重复数据进行去重
having : 将分组的结果进行having过滤
order by : 将结果按条件排序
limit : 限制显示的记录条数

1.3 注意(重点)

  • クエリー配列は、条件をスクリーニングする様々な構造を有することができる、条件が徐々に上向きにするためにスクリーニングしなければなりません

  • 明確な少し特殊な(書き込み位置)、条件の種類が不完全になることができます
  • 条件はなく、注文のうち、削除することができます

1.4テスト異なる重複排除の単一テーブル

# 创建一个表
create table t1(
    id int,
    x int,
    y int
);
1.插入几条数据
insert into t1 values(1, 1, 1), (2, 1, 2), (3, 2, 2), (4, 2, 2);
############################cmd 图示
mysql> select * from t1;
+------+------+------+
| id   | x    | y    |
+------+------+------+
|    1 |    1 |    1 |
|    2 |    1 |    2 |
|    3 |    2 |    2 |
|    4 |    2 |    2 |
+------+------+------+

2.查询全部数据
select distinct * from t1; 
############################cmd 图示
mysql> select distinct * from t1;
+------+------+------+
| id   | x    | y    |
+------+------+------+
|    1 |    1 |    1 |
|    2 |    1 |    2 |
|    3 |    2 |    2 |
|    4 |    2 |    2 |
+------+------+------+
4 rows in set (0.00 sec)

3.查询结果中,把重复的数据去掉
select distinct x, y from t1
############################cmd 图示
mysql> select distinct x,y from t1;
+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
|    1 |    2 |
|    2 |    2 |
+------+------+
3 rows in set (0.00 sec)

4.查询字段y,把y字段的重复值去掉
select distinct y from t1;  # 结果 1  2
############################cmd 图示
mysql> select distinct y from t1;
+------+
| y    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)
  • distinct对参与查询的所有字段,整体去重(所查的全部字段的值都相同,才认为是重复数据)

第二に、テーブルは、クエリのテストを記録します

これに先立って、いくつかの一般的に使用される機能はもちろんのこと

2.1共通機能

  • ステッチ:CONCAT()、CONCAT_WS()
  • ケース:上段()、下()
  • 浮動小数点演算:CEIL()、床()|、ラウンド()
  • 整数:直接操作

2.2データ準備

一例として、当社のスタッフテーブル(EMP):

従業員のID:ID:int型

従業員名:名前:VARCHAR

従業員の性別:性別:列挙型

従業員の年齢:年齢:int型

賃金および給与:給与:フロート

市の職員が配置されています。エリア:varcahr

住所従業:ADDR:VARCHAR

スタッフ部門:DEP:VARCHAR

1.先创建员工表(emp)
create table emp(
    id int primary key auto_increment,
    name varchar(10) not null,
    sex enum('男','女') default '女',
    age int unsigned default 25,
    salary float default 0,
    area varchar(20) null default '中国',
    addr varchar(20) null default '上海',
    dep varchar(20) null default '咨询部'
);
########查看表结构
mysql> desc emp;
+--------+-------------------+------+-----+-----------+----------------+
| Field  | Type              | Null | Key | Default   | Extra          |
+--------+-------------------+------+-----+-----------+----------------+
| id     | int(11)           | NO   | PRI | NULL      | auto_increment |
| name   | varchar(10)       | NO   |     | NULL      |                |
| sex    | enum('男','女')   | YES  |     | 女        |                |
| age    | int(10) unsigned  | YES  |     | 25        |                |
| salary | float             | YES  |     | 0         |                |
| area   | varchar(20)       | YES  |     | 中国      |                |
| addr   | varchar(20)       | YES  |     | 上海      |                |
| dep    | varchar(20)       | YES  |     | 咨询部    |                |
+--------+-------------------+------+-----+-----------+----------------+


2.插入数据
insert into emp values
    (1, 'aaa', '男', 42, 10.5, '上海', '浦东', '教职部'),
    (2, 'bbb', '男', 38, 9.4, '山东', '济南', '教学部'),
    (3, 'ccc', '女', 30, 3.0, '江苏', '张家港', '教学部'),
    (4, 'ddd', '女', 28, 2.4, '广州', '广东', '教学部'),
    (5, 'eee', '男', 28, 2.4, '江苏', '苏州', '教学部'),
    (6, 'fff', '男', 18, 8.8, '中国', '黄浦', '咨询部'),
    (7, 'ggg', '男', 18, 8.8, '安徽', '宣城', '教学部'),
    (8, 'hhh', '男', 28, 9.8, '安徽', '巢湖', '教学部'),
    (9, 'iii', '女', 36, 1.2, '安徽', '芜湖', '咨询部'),
    (10, 'jjj', '男', 36, 5.8, '山东', '济南', '教学部'),
    (11, 'kkk', '女', 28, 1.2, '山东', '青岛', '教职部'),
    (12, 'lll', '男', 30, 9.0, '上海', '浦东', '咨询部'),
    (13, 'mmm', '男', 30, 6.0, '上海', '浦东', '咨询部'),
    (14, 'nnn', '男', 30, 6.0, '上海', '浦西', '教学部'),
    (15, 'ooo', '女', 67, 2.501, '上海', '陆家嘴', '教学部');
########查看表记录
mysql> select * from emp;
+----+------+------+------+--------+--------+-----------+-----------+
| id | name | sex  | age  | salary | area   | addr      | dep       |
+----+------+------+------+--------+--------+-----------+-----------+
|  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
|  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
|  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
|  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
|  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
|  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
|  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
|  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
|  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
| 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
| 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
| 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
| 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
| 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
| 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
+----+------+------+------+--------+--------+-----------+-----------+
15 rows in set (0.00 sec)

表2.3テストの記録

2.3.1どこクエリ条件

  • 文法

    select 字段1,字段2···· from 表名 where 条件表达式
  • 条件付きルール

    1.比较符合  >   <   >=   <=   =    !=
    2.区间符合  between开始 and结束     in(自定义容器)
    3.逻辑符合  and    or   not
    4.相似符合  like _(下划线代表单个字符)   %(可以匹配多个)
    5.正则符合  regexp 正则语法
  • データのテストケース(スタッフがテーブルに、例えば)

    • クエリは、5人のより大きい従業員の給与賃金(ラインでより)

      mysql> select * from emp where salary >5;
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东   | 教职部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南   | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城   | 教学部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南   | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东   | 咨询部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东   | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西   | 教学部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • クエリID番号は、すべての従業員の数が偶数である(ラインでより)

      mysql> select * from emp where id%2=0;
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南   | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东   | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南   | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东   | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西   | 教学部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • すべてのスタッフは6と9の間で賃金を照会(間に沿った範囲)

      mysql> select * from emp where id between 6 and 9;
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城   | 教学部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖   | 咨询部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • でクエリ賃金1、3、7、20の間(区間に沿って、カスタムコンテナ)

      mysql> select * from emp where id in(1,3,7,20);
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 文字O全従業員の名前を持つクエリ(%のような類似したアコード)

      mysql> select * from emp where name like '%o%';
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • すべてのクエリ2番目の文字は**(_のような類似したに沿って)メートルの従業員**ですし、

      mysql> select * from emp where name like '_o%';
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
    • 2つの文字のすべての名前クエリは**(__のような類似したに沿って)**スタッフになる前に

      mysql> select * from emp where name like '__a%';
      
      +----+------+------+------+--------+--------+--------+-----------+
      | id | name | sex  | age  | salary | area   | addr   | dep       |
      +----+------+------+------+--------+--------+--------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东   | 教职部    |
      +----+------+------+------+--------+--------+--------+-----------+
    • すべて1含むすべての従業員のクエリID番号(通常の試合を)

      • SQLサポート正規文法の一部のみ
      • '* \ Dは。'; \ dは\ dは数を表しサポートしていません。
      • '* [0-9]。'; []構文をサポート
      mysql> select * from emp where id regexp '.*[1]';
      
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+

クエリをグループ化することにより2.3.2グループ

グループ化クエリの最初に、問題

  • 1. ONLY_FULL_GROUP_BY下の制限は、行うことができないSQL_MODEが、結果は意味がありません。

    • 各パケットは、各パケットの単一のレコード、基準パケットフィールド、多くの複数のレコードが含まれているため、グループ化した後、表考慮中のデータは、単一のレコードではなく、以下の試験は、上記
    # 按部门分组,每个部门都有哪些人
    mysql> select * from emp group by dep;
    +----+------+------+------+--------+--------+--------+-----------+
    | id | name | sex  | age  | salary | area   | addr   | dep       |
    +----+------+------+------+--------+--------+--------+-----------+
    |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
    |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南   | 教学部    |
    |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东   | 教职部    |
    +----+------+------+------+--------+--------+--------+-----------+
  • 2. ONLY_FULL_GROUP_BY限界、エラー

    • データベース・コンフィギュレーション・ファイルのmy.iniに次のコードを設定し、サービスを再起動します

      sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    # 重启服务后重新进行如上的分组测试
    1.会发现直接报错,因为我们有了这个分组限制以后,那么select查询的字段只能是分组的那个字段dep
    mysql>  select dep from emp group by dep;
    
    +-----------+
    | dep       |
    +-----------+
    | 咨询部    |
    | 教学部    |
    | 教职部    |
    +-----------+

第二に、集約関数

私たちは、このグループ分けスティントを持っているので、そのフィールドは、その唯一の選択クエリフィールドDEPパケット、および取得されていない彼の日のテーブルのフィールドの値であるので、我々は、このグループ分けは、我々が望んでいた結果ではない持っているので、私はしたいですグループ内で追加の情報を取得するために、我々は、ヘルプ機能を必要とします

1.機能分類重合
最大值  max()
最小值  min()
平均值  avg()
求和    sum()
计数    count()
组内字段拼接,用来查看组内其他字段   group_concat()
(例えば、従業員テーブルに、)2.データテスト
  • セクタグループによれば、グループ名のメンバーを表示(GROUP_CONCAT())

    mysql> select dep,group_concat(name) from emp group by dep;
    
    +-----------+-------------------------------------+
    | dep       | group_concat(name)                  |
    +-----------+-------------------------------------+
    | 咨询部    | mmm,lll,fff,iii                     |
    | 教学部    | ooo,nnn,jjj,hhh,ggg,eee,ddd,ccc,bbb |
    | 教职部    | kkk,aaa                             |
    +-----------+-------------------------------------+
  • 部門別にグループ化され、最高給与、人の合計数に設定された最低賃金、平均給与を持つ各部署

    mysql> select
        -> dep 部门,
        -> group_concat(name) 成员,
        -> max(salary) 最高薪资,
        -> min(salary) 最低薪资,
        -> avg(salary) 平均薪资,
        -> sum(salary) 总薪资,
        -> count(sex) 人数
        -> from emp group by dep;
  • 部門別にグループ化され、最大の年齢を見ます

    mysql> select dep 部门,max(age) 最高年龄 from emp group by dep;
    
    +-----------+--------------+
    | 部门      | 最高年龄     |
    +-----------+--------------+
    | 咨询部    |           36 |
    | 教学部    |           67 |
    | 教职部    |           42 |
    +-----------+--------------+

2.3.3持つ和場所

  • パケットが存在しないこと、を有する同じ結果に

  • キー:重合は結果をフィルタリングすることができました

    # 没有分组时where和having测试
    mysql> select * from emp where id in (5, 10, 15, 20);
    +----+------+------+------+--------+--------+-----------+-----------+
    | id | name | sex  | age  | salary | area   | addr      | dep       |
    +----+------+------+------+--------+--------+-----------+-----------+
    |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
    | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
    | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
    +----+------+------+------+--------+--------+-----------+-----------+
    
    
    mysql> select * from emp having salary > 5;# 报错了,这里因为我之前配置了数据库的文件
    ERROR 1463 (42000): Non-grouping field 'salary' is used in HAVING clause
  • グループ化されたスクリーニング検査を持ちます

    • セクターごとにグループ化され、見るためにすべてのために、最も高い給与、最低給与、平均給与、最低賃金の合計数のうち、2未満であります

      mysql> select
          -> dep 部门,
          -> group_concat(name) 成员,
          -> max(salary) 最高薪资,
          -> min(salary) 最低薪资,
          -> avg(salary) 平均薪资,
          -> sum(salary) 总薪资,
          -> count(sex) 人数
          -> from emp group by dep having min(salary)<2;
      # 由于工资是小数,所以在数据库里可能会出现一些错误
      +-----------+-----------------+--------------+--------------------+---------------
      | 部门  | 成员            |最高薪资| 最低薪资| 平均薪资| 总薪资 |人数|
      +-----------+-----------------+--------------+--------------------+---------------
      | 咨询部| mmm,lll,fff,iii |9      | 1.20  | 6.250  | 25.0  | 4 |
      | 教职部| kkk,aaa         |10.5   | 1.20  | 5.85   | 11.7  | 2 |
      +-----------+-----------------+--------------+--------------------+---------------

2.3.4ソート順によって、

文法の最初に、ルール

asc : 字段升序排序,默认是升序
desc : 字段降序排序

# 语法
order by 主排序字段 [asc|desc], 次排序字段1 [asc|desc], ...次排序字段n [asc|desc]
#1.先按主排序字段排序,如果出现主排序字段有某两个或多个字段相同,那就再去按次排序字段排序

第二に、テストデータ

  • グループ化されていないのテスト

    • 年齢の上昇により、

      mysql> select * from emp order by age asc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 給与に従って降順に

      mysql> select * from emp order by salary desc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 同じ場合には、年齢の高い順に、降順に給与することにより

      mysql> select * from emp order by salary desc,age desc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      +----+------+------+------+--------+--------+-----------+-----------+
    • 年齢に応じて降順で、同じ場合は、降順を支払います

      mysql> select * from emp order by age desc,salary desc;
      +----+------+------+------+--------+--------+-----------+-----------+
      | id | name | sex  | age  | salary | area   | addr      | dep       |
      +----+------+------+------+--------+--------+-----------+-----------+
      | 15 | ooo  | 女   |   67 |  2.501 | 上海   | 陆家嘴    | 教学部    |
      |  1 | aaa  | 男   |   42 |   10.5 | 上海   | 浦东      | 教职部    |
      |  2 | bbb  | 男   |   38 |    9.4 | 山东   | 济南      | 教学部    |
      | 10 | jjj  | 男   |   36 |    5.8 | 山东   | 济南      | 教学部    |
      |  9 | iii  | 女   |   36 |    1.2 | 安徽   | 芜湖      | 咨询部    |
      | 12 | lll  | 男   |   30 |      9 | 上海   | 浦东      | 咨询部    |
      | 14 | nnn  | 男   |   30 |      6 | 上海   | 浦西      | 教学部    |
      | 13 | mmm  | 男   |   30 |      6 | 上海   | 浦东      | 咨询部    |
      |  3 | ccc  | 女   |   30 |      3 | 江苏   | 张家港    | 教学部    |
      |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖      | 教学部    |
      |  5 | eee  | 男   |   28 |    2.4 | 江苏   | 苏州      | 教学部    |
      |  4 | ddd  | 女   |   28 |    2.4 | 广州   | 广东      | 教学部    |
      | 11 | kkk  | 女   |   28 |    1.2 | 山东   | 青岛      | 教职部    |
      |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城      | 教学部    |
      |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦      | 咨询部    |
      +----+------+------+------+--------+--------+-----------+-----------+
  • グループ化された状態

    • (例えば、既にグループによってグループ上記後)降順で最も高い給与によります

      mysql> select
          -> dep 部门,
          -> group_concat(name)成员,
          -> max(salary) 最高薪资,
          -> min(salary) 最低薪资,
          -> avg(salary) 平均薪资,
          -> sum(salary) 总薪资,
          -> count(sex) 人数
          -> from emp group by dep order by 最高薪资 desc;
      
      # 由于工资是小数,所以在数据库里可能会出现一些错误
      +-----------+-------------------------------------+--------------+--------------+-
      | 部门 | 成员                                 |最高薪资| 最低薪资|平均薪资|总薪资|人数   |
      +-----------+-------------------------------------+--------------+--------------+-
      | 教职部| kkk,aaa                             |10.5  |1.2     |5.85   |11.7 |2 |
      | 教学部| ooo,nnn,jjj,hhh,ggg,eee,ddd,ccc,bbb |9.8   |2.4     |5.56   |50.1 |9 |
      | 咨询部| mmm,lll,fff,iii                     |9     |1.2     |6.2    |25.0 |4 |
      +-----------+-------------------------------------+--------------+--------------+-

2.3.5限度の制限

まず、文法

limit 条数 
limit 偏移量,条数 偏移量就是跳过几条数据后开始取

第二に、テストデータ(制限の上限)

  • 給与及び賃金従業員名が8未満、賃金の降順、選択され

     select name,salary from emp where salary<8 order by salary desc limit 1;
    +------+--------+
    | name | salary |
    +------+--------+
    | mmm  |      6 |
    +------+--------+
  • 記録条件5をシフトするために満足し、すべての従業員データテーブル、クエリ、そして3をチェック

    mysql> select * from emp limit 5,3;
    +----+------+------+------+--------+--------+--------+-----------+
    | id | name | sex  | age  | salary | area   | addr   | dep       |
    +----+------+------+------+--------+--------+--------+-----------+
    |  6 | fff  | 男   |   18 |    8.8 | 中国   | 黄浦   | 咨询部    |
    |  7 | ggg  | 男   |   18 |    8.8 | 安徽   | 宣城   | 教学部    |
    |  8 | hhh  | 男   |   28 |    9.8 | 安徽   | 巢湖   | 教学部    |
    +----+------+------+------+--------+--------+--------+-----------+

おすすめ

転載: www.cnblogs.com/xichenHome/p/11588406.html