sql如何将新产生的guid和一条其他表的数据插入当前表

sql如何将新产生的guid和一条其他表的数据插入当前表
将A表中的符合条件的数据查出,在新产生一条guid同时插入B表

sqlserver2005+以上案例:

--newid()  直接当及一列查询出来过滤到A表即可!

Insert into B表(字段1....)
select NEWID()[guid],* from A表 where 过滤条件


如有问题可以追问,我当及时回答.

希望能帮到你!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-03

两种方式

 

第一种

建表

create table b (id int,name varchar(10),price int)
insert into b values (1,'aa',100)
insert into b values (2,'bb',90)
insert into b values (3,'cc',101)


create table a (id varchar(64) default newid(),name varchar(10)) --注意a表的建表语句有默认值

先要将b表大于等于100的数据插入a中

insert into a(name) select name from b where price>=100

 

 

另一种方式,b表数据不变

c表

create table c (id varchar(64),name varchar(10))--此时id无默认值

执行

insert into c  select newid(),name from b where price>=100

第2个回答  推荐于2016-05-12
有三种办法:
sqlserver
insert into 表名 (字段名) values (newid())

oracle
insert into 表名(字段名) values (sys_guid())

mysql
insert into 表名(字段名) values(UUID())

你按你是什么数据库挑着用即可。
第3个回答  2013-09-03
insert B(col1,col2) select newid(),col3 from A where xxx追问

as
insert into T_Employee (F_Name,F_Sex,F_Age,F_Department) values (@F_name,@F_sex,@F_age,@F_department);

追答

你这是要问什么?create proc里面的参数如果是字符类型必须规定长度
如varchar(36),不然的话默认长度即为1,参数长度超过1就会被截断

追问

insert into T_Attend (F_Num,F_No) select F_Num from T_Employee,select F_No from T_Wage
错误:
Incorrect syntax near the keyword 'select'.
求教

追答

额。。你这完全两个表的数据啊,如果你能确保后面两个表的select只有一条数据的话
可以select (select F_Num from T_Employee),(select F_No from T_Wage)
如果不能保证的话,那么需要将后面两个进行联查查询了
如果联合查询没有关联条件,可以用row_number()函数构建行号进行关联

追问

谢谢,谢谢,非常感谢!问题解决了

追答

呵呵,解决后请给好评哦亲~

追问

必须的么,亲,
insert into T_Attend (F_id,F_Num,F_No) ) select (select F_Num from T_Employee),(select F_No from T_Wage)
这条语句,我想同时插入一条普通的数据要怎么写,例如把 ‘test’,同那两个select出来的一同插入

追答

select (select F_Num from T_Employee),(select F_No from T_Wage)

union all
select '值1','值2'
union all前后对应的列类型要一致

追问

insert into T_Attend (F_id,F_Num,F_No,F_Attendance) 后面可以帮我写下么,F_id是guid,F_Attendance是varchar,非常非常感谢

追答

哦,你是说3个字段啊,并排写就行了,逗号隔开

insert into T_Attend (F_id,F_Num,F_No,F_Attendance)   
select (select F_Num from T_Employee),(select F_No from T_Wage),'test'

本回答被提问者采纳

sql如何将新产生的guid和一条其他表的数据插入当前表
--newid() 直接当及一列查询出来过滤到A表即可!Insert into B表(字段1...)select NEWID()[guid],* from A表 where 过滤条件 如有问题可以追问,我当及时回答.希望能帮到你!

已经建立SQL 表,如何在字段中插入GUID数据?
oracle:insert into 表名(字段名) values (sys_guid())。mysql:insert into 表名(字段名) values(UUID())。sql一般指结构化查询语,结构化查询语言(Structured Query Language)简称SQL(发音:\/ˈes kjuː ˈel\/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序...

...我想用EXCEL导入某些数据表,可是EXCEL中如何才能产生GUID...
很简单,先把excel的数据倒到数据库的表中,这个表是你新建的表A。然后把表的数据插入到你的正式表B中 insert into B select newid(),* from A

怎么在一个sql表中的列中添加数据
首先我们打开SQL,显示出我们之前已经创建好的表格如下 当我们需要重新插入一行新的数据时,我们输入下列代码:INSERT INTO 表名称 VALUES (值1,值2,...);接着重新显示如下 如果我们只想在某一列或者某几列里面插入数据,则如下操作,语法如下:INSERT INTO table_name (列1,列2,...)VALUES (值1...

...SERVER 2005 SSIS项目如何为数据源添加自动的GUID类型的ID? 如何更 ...
guid的话 你在做数据源编写代码的时候添加一个row_num做为一个字段就行了,前提是你的目标的表中有对应的 row_num 字段 更新删除目标数据库的数据的话你只要 添加一个执行SQL任务,在执行SQL任务中选择正确的数据库,在里面写要更新或者删除的语句就可以了。

SQLSERVER如何使用递增排序的GUID做主键
因为Guid是随机生成的,生成的值大小是不确定的,每次生成的数可能很大,也可能很小。这样会影响插入的效率1.NEWSEQUENTIALID和newid()的区别NEWSEQUENTIALID() 和 NEWID()都可以产生uniqueidentifier类型的,GUID.NEWID()产生的GUID是无序的,随机的。而NEWSEQUENTIALID()是SQL SERVER2005新特性,NEWSEQUENTIALID是...

T-Sql中如何实现语句分两步执行 先给表1 中插入数据 然后根据表1 的id...
set @areaid=@@IDENTITY; 就是获取 最新的自增ID的啊。你贴出来的代码, 不是都实现功能的么?还是你想拆分为2个存储过程来处理?

c#向sql中插入数据时如何自动生成编号作为主键
CREATE TABLE Test(Id INT PRIMARY KEY IDENTITY,Value NVARCHAR(128) NOT NULL)插入数据的时候,不要给主键赋值,主键会自动增长 INSERT INTO Test VALUES('Value1')INSERT INTO Test VALUES('Value2')数据表中的数据为:Id Value 1 Value1 2 Value2 当然,如果你不希望Id从1开始,或者...

SQL 中Guid 怎么优化?
1、生成我觉得可以先预生成一定数量的GUID备用,然后使用时候,从这个表取。如果表的使用量低于50%,则自动填满。2、GUID是由网卡地址和CPU时间戳生成的,很可能前面都是重复的部分,完全可以忽略重复的,比较不重复的做索引排序依据。

如何用sql语句遍历一个用户表,然后在数据表为每个用户添加一条新...
--插入数据 insert into whilestu2 (stuName, age)values ('学员' || cast(maxstuid as varchar2(50)), age);commit;num1 := num1 + 1;END LOOP;end;\/ 3:使用GUID生成主键的方式 select sys_guid() from dual;DECLARE num1 number;--maxstuid number;age number;stuid raw(16);b...

相似回答