MySQL自增字段取值的详细介绍(附代码)


当前第2页 返回上一页

3 其他情况

上面那是正常情况下的取值,下面我们探讨一种特殊情况

3.1 根据分组自增长

有一种特殊情况会造成自增长字段可能不会自增长, 就是当使用 MyISAM引擎,且使用了联合索引,自增字段为非联合索引首个字段。

这种情况下,自增字段取值为MAX(auto_increment_column) + auto_increment_offset WHERE prefix=given-prefix, 怎么理解,就是计算增长值的时候,对联合索引自增长字段前面字段做一个分组,在该分组内做一个独立的增长计算。

例如对a,b,c做了联合索引,c是自增字段,那么对where a=xx and b=xx这个条件下的数据做独立的增长计算。下面是实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

db83-3306>>CREATE TABLE user_pets (

    ->     name varchar(16) NOT NULL,

    ->     id_inc INT NOT NULL AUTO_INCREMENT,

    ->     pets varchar(16) NOT NULL,

    ->     PRIMARY KEY (name, id_inc)

    -> ) ENGINE=MyISAM;

Query OK, 0 rows affected (0.00 sec)

 

db83-3306>>INSERT INTO user_pets(name, pets) VALUES

    -> ('chengqm', 'dog'),

    -> ('chengqm', 'cat'),

    -> ('chengqm', 'fish'),

    -> ('yexm', 'dog'),

    -> ('yexm', 'cat'),

    -> ('yexm', 'fish');

Query OK, 6 rows affected (0.00 sec)

Records: 6  Duplicates: 0  Warnings: 0

 

db83-3306>>SELECT * FROM user_pets;

+---------+--------+------+

| name    | id_inc | pets |

+---------+--------+------+

| chengqm |      1 | dog  |

| chengqm |     11 | cat  |

| chengqm |     21 | fish |

| yexm    |      1 | dog  |

| yexm    |     11 | cat  |

| yexm    |     21 | fish |

+---------+--------+------+

6 rows in set (0.00 sec)

从结果可以看出,在name字段相同的字段内,会有独立的自增长计算,这种计算方式在做group by的时候非常方便。

以上就是MySQL自增字段取值的详细介绍(附代码)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

在创建交叉表查询时,列标题字段的值显示在交叉表的位置是什么?

navicat连接mysql出现1045错误的解决方法是什么

mysql数据库之数据表操作ddl数据定义语言

如何利用mysql数据库命令创建和查看分区情况

我所理解的mysql五:锁及加锁规则

mysql模糊查询语句整理集合

mysql能装两个吗?

详解mysql中order by多字段排序规则

mysql怎么存数组

mysql 如何去掉毫秒值

更多相关阅读请进入《数据库》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...