当前位置:首页 » 编程语言 » sql中分配id
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql中分配id

发布时间: 2023-08-18 20:28:37

1. Mysql数据库中,设置id为自动增加,向数据库中插入数据时,SQL语句怎么写

在建立表的时候设置id为自动增长的 [id] [int] IDENTITY (1, 1)

SQL语句是insert into user(name,passwd) values (name ,passwd)。新增一条数据 id 就会自动加1

INSERT INTO是sql数据库中的语句,可以用于向表格中插入新的行。

(1)sql中分配id扩展阅读

(1) 数据记录筛选:

sql="select * from 数据表 where字段名=字段值 order by字段名[desc]"(按某个字段值降序排列。默认升序ASC)

sql="select * from 数据表 where字段名like '%字段值%' order by 字段名 [desc]"

sql="select top 10 * from 数据表 where字段名=字段值 order by 字段名 [desc]"

sql="select top 10 * from 数据表 order by 字段名 [desc]"

sql="select * from 数据表 where字段名in ('值1','值2','值3')"

sql="select * from 数据表 where字段名between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set字段名=字段值 where 条件表达式"

sql="update 数据表 set 字段1=值1,字段2=值2 ?? 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 ?) values (值1,值2,值3 ?)"

sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值

COUNT(*;字段名) 对数据行数的统计或对某一栏有值的数据行数统计

MAX(字段名) 取得一个表格栏最大的值

MIN(字段名) 取得一个表格栏最小的值

SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"

set rs=conn.excute(sql)

用 rs("别名") 获取统计的值,其它函数运用同上。

查询去除重复值:select distinct * from table1

(6) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) ?? )

(7) 单列求和:

SELECT SUM(字段名) FROM 数据表

2. 请问一下:有一个表,根据它的id分组查询(分组后的每个id)前4条数据,怎样写sql语句

首先,按照id分组后的前4条数据是根据什么字段排序取的前4条数据,假设情况如下。表有两列,一列为id列,一列为排序列,假设为score。即表如下:
id score
1 99
1 98
1 97
1 96
1 95
2 100
2 87
2 96
……

你所要的结果应该是这样的?取按照课程号分组后,取每个课程号的前4个高分的情况。
select t.id,t.score from (select id,score,rank() over (partition by id order by score desc) ranks from 表) t where t.ranks<=4;
以上语句在比如数分数为第三名的有两个同学,那么就会显示两条数据,而不是一条。如果没有这样的要求,可以使用rownum实现。

3. SQL中用Group by 分组 假如有个字段ID,值1~10,想分成3组(1,3,7)(2,4,5,6)(8,9,10)

select id,sum(case when id in (1,3,7) then 1 else 0 end),
sum(case when id in (2,4,5,6) then 1 else 0 end),
sum(case when id in (8,9,10) then 1 else 0 end)
from tb group by id

这个意思?
-----补充-----

select num,sum(case when id in (1,3,7) then num else 0 end),
sum(case when num in (2,4,5,6) then num else 0 end),
sum(case when num in (8,9,10) then num else 0 end)
from tb group by num

试验下这个

4. SQL中如何平均分配,还请大家帮忙,万分感谢 SQL语句如何写,谢谢了

从cati_group表建立游标,条件是没有分配电话号码的人,并进行循环;
从telephone_GMI20110602表中取第一条没有分配的电话记录,修改状态和id字段;telephone_GMI20110602表成功后,根据projectid回写cati_group表。
代码中要有错误判断和事务处理,用存储过程实现。

5. 在sql中,自动生成ID号

CREATE SEQUENCE customer_sequence
START WITH 10000
INCREMENT BY 1;
INCREMENT BY 1;
CREATE TABLE customer(
customer_id NUMBER(5) PRIMARY KEY,
first_name VARCHAR2(20),
last_name VARCHAR2(20),
major VARCHAR2(30),
current_credits NUMBER(3));
INSERT INTO students(customer_id,first_name,last_name,major,current_credits)
VALUES(student_sequence.NEXTVAL,'Scott','Smith','Computer Science',11);

6. sql根据id自动分表存储

我感觉你这个需求使用分区表来实现会更好一些

但如果你要使用你的方法也是可以的
create table x_a(id int,name varchar(200));
go
create procere changetablename
@oldtable as nvarchar(200),
@newtable as nvarchar(200)
as
declare @sqlstr varchar(2000),@cretri varchar(8000)
begin
exec sp_rename @oldtable,@newtable
set @sqlstr='create table '+@oldtable+'(id int,name varchar(200))'
exec(@sqlstr)
drop trigger t_x_a_id;
set @cretri='create trigger t_x_a_id
on x_a
for insert
as
declare @idnum int,@tbid int,@sqlstr varchar(200),@tbn varchar(200);
select @idnum=id%10,@tbid=round(id/10,0) from inserted;
set @sqlstr='+'''x_a'''+'+cast(@tbid as varchar(20));
set @tbn='+'''x_a'''+';
if @idnum=0
begin
exec dbo.changetablename @tbn,@sqlstr;
end'
exec(@cretri)
end
go
create trigger t_x_a_id
on x_a
for insert
as
declare @idnum int,@tbid int,@sqlstr varchar(200),@tbn varchar(200);
select @idnum=id%10,@tbid=round(id/10,0) from inserted;
set @sqlstr='x_a'+cast(@tbid as varchar(20));
set @tbn='x_a';
if @idnum=0
begin
exec dbo.changetablename @tbn,@sqlstr;
end
go