怎样在SELECT时添加一个自增的列呀? 恐怕不行,有一个函数newid(),但他返回的恐怕不是你想要的,你可以试一下.我通常是插到一个自动生成流水号的表里,然后再select 一下.(sql server) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的思路是:A、首先创建一个序列,然后在select的时候直接调用nextval即可B、其实oracle有一个自动创建了序号,也可以直接调用,好像是rownum吧。没有测试,因为没有环境,明天测试了在给你确定的答复,你也可以测试一下。 Select (Select count(*) from tablename where key<=b.key) as Seq,* from tablename b-- select rownum as id,* from (sele * from table ) 我是通过oledb查access数据库,rownum好像不能用,各位大侠还有什么办法吗?to: N_Chow:你写的我看不太懂,能稍微解释一下吗? select IDENTITY(int,1,1) as iden,* from tablename IDENTITY能用到查询中?好像不行吧,我试了一下,报告没有IDENTITY这个函数。 用IDENTITY就可以定义自增的列啊如果想在查询中添加自增列,用IDENTITY函数:(摘自SQLSEVER联机丛书)只用在带有 INTO table 子句的 SELECT 语句中,以将标识列插入到新表中。尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。语法IDENTITY ( data_type [ , seed , increment ] ) AS column_name参数data_type标识列的数据类型。标识列的有效数据类型可以是任何整数数据类型分类的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。seed要指派给表中第一行的值。给每一个后续行指派下一个标识值,该值等于上一个 IDENTITY 值加上 increment 值。如果既没有指定 seed,也没有指定 increment,那么它们都默认为 1。increment用来添加到 seed 值以获得表中连续行的增量。column_name将插入到新表中的列的名称。 返回类型返回与 data_type 相同的类型。注释因为该函数在表中创建一个列,所以必须用下列方式中的一种在选择列表中指定该列的名称:--(1)SELECT IDENTITY(int, 1,1) AS ID_NumINTO NewTableFROM OldTable--(2)SELECT ID_Num = IDENTITY(int, 1, 1)INTO NewTableFROM OldTable示例下面的示例将来自 pubs 数据库中 employee 表的所有行都插入到名为 employees 的新表。使用 IDENTITY 函数在 employees 表中从 100 而不是 1 开始编标识号。USE pubsIF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'employees') DROP TABLE employeesGOEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'SELECT emp_id AS emp_num, fname AS first, minit AS middle, lname AS last, IDENTITY(smallint, 100, 1) AS job_num, job_lvl AS job_level, pub_id, hire_dateINTO employees FROM employeeGOUSE pubsEXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false' IDENTITY 只用在带有 INTO table 子句的 SELECT 语句中,可我只是单纯的查询嘛~~~。 怎么批量更新流水号? MS-SQL在建表时,对于日期时间字段,如何将当前时间作为默认值? 请sqlserver 高手 解决 如何用CONTAINS 或 FREETEXT? SQL报表服务器怎么添加ODBC数据源 数据库备份和恢复的问题 如何优化查询 软件下载数据库设计 这样的触发器可不可以??? 反编译ACCESS的MDE文件 我是菜鸟,请大虾多指点! 关于.dbf数据库彻底删除问题?
A、首先创建一个序列,然后在select的时候直接调用nextval即可
B、其实oracle有一个自动创建了序号,也可以直接调用,好像是rownum吧。
没有测试,因为没有环境,明天测试了在给你确定的答复,你也可以测试一下。
to: N_Chow:你写的我看不太懂,能稍微解释一下吗?
IDENTITY ( data_type [ , seed , increment ] ) AS column_name参数
data_type标识列的数据类型。标识列的有效数据类型可以是任何整数数据类型分类的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。seed要指派给表中第一行的值。给每一个后续行指派下一个标识值,该值等于上一个 IDENTITY 值加上 increment 值。如果既没有指定 seed,也没有指定 increment,那么它们都默认为 1。increment用来添加到 seed 值以获得表中连续行的增量。column_name将插入到新表中的列的名称。 返回类型
返回与 data_type 相同的类型。注释
因为该函数在表中创建一个列,所以必须用下列方式中的一种在选择列表中指定该列的名称:--(1)
SELECT IDENTITY(int, 1,1) AS ID_Num
INTO NewTable
FROM OldTable--(2)
SELECT ID_Num = IDENTITY(int, 1, 1)
INTO NewTable
FROM OldTable示例
下面的示例将来自 pubs 数据库中 employee 表的所有行都插入到名为 employees 的新表。使用 IDENTITY 函数在 employees 表中从 100 而不是 1 开始编标识号。USE pubs
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'employees')
DROP TABLE employees
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'SELECT emp_id AS emp_num,
fname AS first,
minit AS middle,
lname AS last,
IDENTITY(smallint, 100, 1) AS job_num,
job_lvl AS job_level,
pub_id,
hire_date
INTO employees
FROM employee
GO
USE pubs
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'