sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导相关的知识,希望对你有一定的参考价值。
其中T_Message表中有(id,sender,receiver,hasAttachment,state)hasAttachment是bit类型,只有0或者1
T_AttachMessage表中有(id,msgId,filename,filesize,filedesc)
现在是往T_AttachMessage表中插入数据,但是msgId是从T_Message中查询(如果T_Message表中的hasAttachment为1那么将T_Message表中的id插入到T_AttachMessage表中)T_AttachMessage表中的其他数据另外插入.求指点呀!急!
T_AttachMessage除msgId的其他字段是在页面自己手动填入的,如果hasAttachment为1那么将T_Message表中的id插入到T_AttachMessage表中的msgId,如果为0的话 ,什么都不插入!
追答这样,我举个例子你看一下:
如果是页面添加数据的话,那么就是说id,filename,filesize,filedesc相当于这些数据是页面代入的值,插入数据这样就可以了,
insert into T_AttachMessage(id,msgId,filename,filesize,filedesc)
select 页面id, b.id, 页面filename, 页面filesize, 页面filedesc
from T_Message a, T_AttachMessage b
where a.** = b.**
and a.hasAttachment = 1
and b.id = 页面id;
我说的意思其实就是你代码代入的数据要跟某些表关联才能产生结果啊?不然怎么会有数据呢?
你总不可能比如我在页面添加了数据,然后可以随便从T_Message找个hasAttachment为1的相关id插入吧?
492358238 你加我吧,我给你细说一下,这上面打字有限制
追答上班不能上qq,我们qq软件是禁掉的
参考技术A insert into T_AttachMessage (xx,xx) select xx,xx from T_Message where T_Message.hasAttachment=1追问
这样不行呀,这样只能插入T_MessageAttach中的(MsgID)
语句难道这样?这样写在后台代码里,貌似有点别扭呀!
insert into T_MessageAttach(MsgID,[FileName],FileDesc,FileSize) values('select ID from T_Message where HasAttachment=1','aa','bb','100')
有哪些列你就 select 哪些列啊
如何用SQL语句向一个表中插入多行记录
参考技术Ainsert一般是用来给表插入一条指定的列值的,但是,insert还存在另一种形式,可以利用它将一条select语句的结果插入表中。
这就是所谓的insert select,顾名思义,它是由一条insert语句和一条select语句组成的。假如你从另一张表中合并客户列表到你的Custumers表,不需要每次读取一行,然后再将它用insert插入,可以如下进行:
insert into Custumer(cust_id,
cust_cintact,
cust_name,
cust_email,
cust_address,
cust_country)
select cust_id,
cust_cintact,
cust_name,
cust_email,
cust_address,
cust_country
from CustNew;
扩展资料
insert select中的列名为简单起见,这个例子在insert和select语句中使用了相同的列名,但是,不一定要求列名匹配。事实上,DBMS甚至不关心select返回的列名,它使用的是列的位置。
因此,select中的第一列(不管其列名)将用来填充表列中的指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。
以上是关于sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导的主要内容,如果未能解决你的问题,请参考以下文章