MSSQL 帮我看下这句话哪出错了!成功立马给分

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:54:52
INSERT INTO auth (userid, zoneid, rid) VALUES ('SELECT * FROM users WHERE (name = 'hackyj')', 1, 1000)

我是想取users表里面指定name的ID添加到authd里面的userid

这样取ID肯定错误 麻烦各位教我书写下...
WHITE_WIN 多谢你的回答 我用了你的语句出现错误

服务器: 消息 245,级别 16,状态 1,行 1
将 varchar 值 'hackyj' 转换为数据类型为 int 的列时发生语法错误。

declare @name varchar(20) --定义个变量接收
select @name= name from jobs where name = 'hackyj'
INSERT INTO auth (userid, zoneid, rid) VALUES (@name, 1, 1000)
试试

先给分,再答

还是分开写吧,或者写一个存储过程。

顺序错了
('SELECT * FROM users WHERE INSERT INTO auth (userid, zoneid, rid) VALUES= 'hackyj')', 1, 1000)

INSERT INTO auth SELECT userid=name,zoneid=1,rid=1000 FROM users WHERE name = 'hackyj'

这样是实现将表users中的NAME添入AUTH中的USERID,
1添入AUTH中的zoneid,
000添入AUTH中的rid
条件是USERS中的NAME='HACKYJ'
不过,不知道您是要将NAME添入ID还是有一个NAMEID的字段,如果是NAMEID字段呢就这样

INSERT INTO auth SELECT userid=nameID/*将这个字段名改成USERS中的ID*/,zoneid=1,rid=1000 FROM users WHERE name = 'hackyj'--后面这个查询的字段数及类型要与AUTH一致,不一致时要进行转换
=======
再次提示您一句,您在字段值(values子句)中使用子查询是不允许的,只能使用标量表达式
====
通过错误提示我知道您的AUTH中的ID是个整型,如果USERS中的ID也是整型,将NAMEID的字段名改成您USERS中的ID的字段名就行了。
如果USERS中的ID不是整型,要转换成整型