请问insert语句中的Values能否带Select语句(有示例)?

Dic4000 2010-09-04 10:33:41

create table BlockManage
(
BmUID int ,
ForumID int ,
BmType bit,
MUID int references Member(UID) ,
MTime smalldatetime default(getdate()),
primary key (BmUID,ForumID)
)

create table member
(
[UID] int primary key,
MemberName nvarchar(15) unique not null
)

INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
VALUES(
SELECT UID FROM MEMBER WHERE UID=0 OR MEMBERNAME='admin',
2010082715484700,
0,
0,
getdate())



insert插入语句报错,但是BMUID字段的值必须要通过查询语句得到的

我知道有一种写法可以

INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
select
(SELECT top 1 UID FROM MEMBER WHERE UID=0 OR MEMBERNAME='admin'),
2010082715484700,
0,
0,
getdate()


但还是想问问insert语句中的Values中到底能不能带Select语句?(要求:不能写成存储过程)


...全文
8881 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlx20093A 2010-09-04
  • 打赏
  • 举报
回复
不行,1insert into 表名 values(n1,n2...)
2insert 表名 列名 vaues(n1,n2...)
3insert into table (...)
select ....
union all select ....
union all select ....
union all select ....
union all select ....
看联机从书吧
GUOCHENGJUN 2010-09-04
  • 打赏
  • 举报
回复
jfzr..............................................................
claro 2010-09-04
  • 打赏
  • 举报
回复
不能
claro 2010-09-04
  • 打赏
  • 举报
回复
不能
Dic4000 2010-09-04
  • 打赏
  • 举报
回复

大家辛苦了,我只是想问问Values中能否带Select语句,给个明确的答复,能或不能?

hao1hao2hao3 2010-09-04
  • 打赏
  • 举报
回复
应该写成



INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
SELECT UID,2010082715484700,0,0,getdate() FROM MEMBER WHERE UID=0 OR MEMBERNAME='admin'
Dic4000 2010-09-04
  • 打赏
  • 举报
回复
谢谢大家,像

INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
SELECT ..,...,..


这种写法我知道

我只是想问问Values中能否带Select语句



hao1hao2hao3 2010-09-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hao1hao2hao3 的回复:]
直接

SQL code

INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
SELECT UID FROM MEMBER WHERE UID=0 OR MEMBERNAME='admin',
2010082715484700,
0,
0,
getdate()
[/Quote]

不好意思,列数要对应上。

select 里面的列数要和表里指定的列数相同。
hao1hao2hao3 2010-09-04
  • 打赏
  • 举报
回复
直接

INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
SELECT UID FROM MEMBER WHERE UID=0 OR MEMBERNAME='admin',
2010082715484700,
0,
0,
getdate()
Dic4000 2010-09-04
  • 打赏
  • 举报
回复

values(col1,col2)


也就是说values中只能是值,不能带有select语句?
喜-喜 2010-09-04
  • 打赏
  • 举报
回复
这样写成不?
INSERT INTO BLOCKMANAGE(BMUID,FORUMID,BMTYPE,MUID,MTIME)
SELECT UID,2010082715484700,0,0,getdate() FROM MEMBER WHERE UID=0 OR MEMBERNAME='admin'
liangCK 2010-09-04
  • 打赏
  • 举报
回复
insert into tb(col1,col2) values(col1,col2)

insert into tb(col1,col2) select col1,col2 from tb
jason成都 2010-09-04
  • 打赏
  • 举报
回复
不可以,但是可以使用变量。
cxmcxm 2010-09-04
  • 打赏
  • 举报
回复
如果用values只能输入标量表达式,不能有子查询
如果要用子查询,可改用select 来实现

34,870

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧