`
234390216
  • 浏览: 10233233 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462641
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775538
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398382
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395024
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679993
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530901
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183984
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467947
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151403
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68154
社区版块
存档分类
最新评论

MySQL中自定义函数实现id自增长

 
阅读更多

今天在项目中有这样一个需求,就是需要把table1里面的a,b,c三个字段通过按a,b分组,对c进行汇总,然后插入到table2中的a,b,c中,然后我就这样写的SQL语句:

insert into table2(a,b,c) select a,b,sum(c) c  from table1 group by a,b;

 

这样一写,问题又出现了table2有个主键id,但不是自增长的,需要在插入的时候自己给主键设值。于是我找老大要求把id改成自增长的,老大不同意。考虑到每次在把table1里面的数据插入到table2中的时候,table2都是空的,无奈,我只能写了这样一个实现id自增长的一个函数getId:

create function getId() returns int begin 
set @id = @id + 1;
return @id;
end;
   

然后在每次进行插入前都把id设为0,使id从1开始,于是我的SQL语句就成了下面这个样子:

set @id = 0;
insert into table2(id,a,b,c) select getId() id,a,b,sum(c) c from table1 group by a,b;
 

 

此外如果想删除该函数的话可以使用命令:

 
drop function getId;
2
0
分享到:
评论

相关推荐

    sql获得自动增加字段的下一个编号,不是max(id)+1

    传统上,为了获取下一个自增长ID,开发人员可能会选择查询表中的最大ID值,然后在此基础上加1。例如: ```sql SELECT MAX(id) + 1 AS NextID FROM TableXXX; ``` 这种方法简单直观,但在多用户环境中容易出现问题...

    一列保存多个ID(将多个用逗号隔开的ID转换成用逗号隔开的名称)

    第一步,我们可以使用`OUTER APPLY`和自定义函数`fun_SplitIds`(该函数的作用是将逗号分隔的ID字符串拆分为单独的ID)将员工表和部门表关联。这将生成一个临时结果集,包含每个员工ID及其对应的部门名称。如果员工...

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    在MySQL中,主键自动增长是通过`auto_increment`关键字实现的。当你创建一个表并定义某个字段为`auto_increment`类型的主键时,如`id int auto_increment primary key not null`,每次插入新记录且不提供该字段的值...

    Oracle到mysql转换的问题总结要点.doc

    - Oracle的`NEXTVAL`函数在MySQL中可通过自定义函数或`LAST_INSERT_ID()`实现类似功能。 4. **翻页查询**: - MySQL使用`LIMIT`关键字进行分页,如`LIMIT m, n`,从第m+1条开始取n条数据。 5. **函数转换**: -...

    mysql转换到oracle数据库

    - **MySQL**:支持`AUTO_INCREMENT`特性,可实现自动增长ID。 - **Oracle**:通过序列(sequence)来实现类似功能,但在程序设计时需要特别处理(使用Hibernate等ORM框架时则无需额外处理)。 **2. 分页查询** - *...

    Qt使用Mysql基本操作方法

    `mysqlheader.h`是自定义的头文件,用于包含MySQL的连接和操作函数。 接下来,让我们关注`main.cpp`文件中的代码实现。首先,我们需要包含必要的头文件: ```cpp #include #include #include #include #...

    使用MySQL的LAST_INSERT_ID来确定各分表的唯一ID值

    在MySQL数据库中,为了确保数据记录的唯一性,通常会在每个表中设置一个带有`AUTO_INCREMENT`属性的`ID`字段。然而,在分表的情况下,由于各分表的`ID`字段同样使用`AUTO_INCREMENT`,会导致无法区分来自不同分表的...

    PHP 使用MySQL管理Session的回调函数详解

    通过实现这些回调函数,我们可以有效地将Session数据存储到MySQL数据库中,从而满足一些特殊的应用场景需求。这种机制的实现提高了Session管理的灵活性和效率,但同时也需要注意数据库操作的安全性和性能问题。在...

    省市县区四级数据库(mysql)

    例如,`province`表中的`country_id`字段,`city`表中的`province_id`,以及`district`表中的`city_id`。这样,通过外键关联,可以方便地查询出任何级别的行政区域及其子区域。 3. **索引优化**:为了提高查询效率...

    Mysql数据库学习

    - **恢复:** 将备份的SQL脚本重新导入到MySQL中实现数据恢复。 #### 二、数据表 **2.1 如何创建表** - 使用`CREATE TABLE`命令创建表。 - 示例:`CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50),...

    mysql如何进行分区-mysql分区有哪些方法.pdf

    MySQL 数据库是一个广泛使用的开源关系型数据库管理系统,尤其在 PHP Web 开发中极其...在确认 MySQL 服务器支持分区功能后(通过 `SHOW VARIABLES LIKE '%partition%'` 查询),可以进一步考虑分区的具体实现方式。

    session 加入mysql库的方法

    这可以通过调用`session_set_save_handler()`函数来实现,该函数允许我们自定义session数据的读取、写入、关闭等操作。以下是一个简单的示例,展示了如何配置PHP以使用MySQL存储session数据: ```php ini_set(...

    08_传智播客ibatis教程_sql主键生成方式

    2. **身份列(Identity)**:在MySQL、SQL Server等支持自动增长的数据库中,可以设置某一列为主键并自动递增。在Ibatis中,可以在插入语句后直接获取生成的主键值。 3. **雪花算法(Snowflake)**:这是一种分布式...

    sql主键产生器

    5. **自定义函数**:对于更复杂的主键生成逻辑,可以编写自定义SQL函数。这可能包括基于某种算法的组合,如用户ID、时间戳和随机数。 6. **第三方库**:在编程语言层面,有许多库和框架提供了主键生成的功能,如...

    《MY-SQL实用教程》期末考精彩试题.docx

    29. `SELECT AUTO_INCREMENT`是MySQL中设置自动增长ID的语句。 综上所述,这些试题涵盖了SQL的基本概念,如查询、数据类型、表结构、索引、分组、聚合函数以及完整性约束等方面的知识,是学习SQL的基础。理解并掌握...

    PHP实现递归无限级分类

    其中id字段为主键,并且是自增长的,这样可以保证每一个分类都有一个唯一的标识符;pid字段则用来标识当前分类的父分类。 创建数据表的SQL语句如下所示: ```sql CREATE TABLE IF NOT EXISTS `class` ( `id` ...

    FIREBIRD使用经验总结

    这通常是因为服务器管理员未授予对UDF(用户自定义函数)库的访问权限所导致的。 **解决方案**: 1. 确认'rfunc.dll'文件存在于FIREBIRD的`bin`目录下。 2. 联系服务器管理员,请求授予相应的权限。 3. 如果是自己...

Global site tag (gtag.js) - Google Analytics