数据库一列插入多行数据,需要不断循环400次update。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库一列插入多行数据,需要不断循环400次update。相关的知识,希望对你有一定的参考价值。

update recipe set photo_E_L='r032.png' where id=32,如何设置r032.png,不断循环到r400.png,id对应的为32并不断自增1。r@a.png为varchar类型,请高手帮忙,多谢,急!
否则我需要一直手动查询更改400次,太费时了,可惜我一直没搞定循环400次的sql语句。先谢谢了!
我使用的是sqlite数据库,可否定义变量不断循环,每次都自增1。插入的效果是
列名 id photo_E_L
1 r001.png
2 r002.png
不断循环到
400 r400.png
搞定了 我再加分!谢谢!
备注:这问题一个是方法是写一个for循环语句,导出400条sql语句,直接在sqlite database browser中执行400条update语句或insert sql语句即可(具体可以参考第二和第四的回答者,在此表示感谢,声明一下本人就是这样解决的),但是我认为最好的方法,一定是最有效和最简洁的,这个方法就是在excel中的一列中输入r001.png,在方框的边上有加号时,双击即可生成你要多少行的数据(r001.png到r400.png),然后在另一列输入insert或update语句即可实现插入或者更新。
例如:update recipe set photo_E_L='"&B2&"' where id='"&A2&"',除了上面自动插入,也可以往下拉到某一行,即可完成所有sql语句实现。
所以我决定把分数给“ wy_1900”这位,方法很好,不过在你回答之前我早已经解决了(具体问题我已经在下面回答了),但是分数还是要送出去的,可惜不能平分给大家,谢谢各位!

参考技术A 用c#写sql语句
int NUM =32;
string str ="";
for (int a;a<400;a++)


str +="update recipe set photo_E_L='r0"+ NUM.tostring() +".png' where id="+ NUM.tostring();+"\r\n"
NUM ++;


//上面的代码 你得到了你要执行的sql语句,你可以将str输出到textbox中复制到企业管理器中执行,或者在c#中直接执行。
//不知道你的数据库,只能帮你这么多了
//补充下,因为是拼接字符串生成sql语句,不需要考虑数据类型
参考技术B 其实你这个需求可以通过excel下拉生成400行信息,然后导入数据库,这种方法很快。就是不知道sqlite数据库支持文件导入吗追问

我之前已经试过了,很好,还是我老板想出来的,可以写个sql语句,再把各行加起来,得到自己想要的sql语句,再在sqlite数据库中执行sql语句,效果很好。无论你用的是什么数据库,都可以通过sql语句的执行,转换成sqlite数据库(.db文件)。

本回答被提问者采纳
参考技术C 直接的方法太费时啦,就用间接的方法。
定义字符串 值为“r@a.png”。用截取方法获得“@”。再循环生成032-400。并将“@”替换掉。最后一一对应放进去即可。
参考技术D 呵呵 修改啊:
---SQL SERVER 2005测试
DECLARE @I INT
SET @I=1
WHILE @I<=400
BEGIN
UPDATE recipe SET photo_E_L='r'+RIGHT('000'+RTRIM(CAST(@I AS VARCHAR(3))),3)+'.png'
WHERE id=32
SET @I=@I+
END
------------------测试循环------

DECLARE @I INT
SET @I=1
WHILE @I<=400
BEGIN
PRINT 'r'+RIGHT('000'+RTRIM(CAST(@I AS VARCHAR(3))),3)+'.png'
SET @I=@I+1
-- update recipe set photo_E_L='r032.png' where id=32,
END
----结果如下
r001.png
r002.png
r003.png
r004.png
r005.png
r006.png
r007.png
r008.png
r009.png
r010.png
r011.png
r012.png
r013.png
...
r397.png
r398.png
r399.png
r400.png追问

好,我试试啊!

追答

你试试,我也没用过sqlite数据库不清楚通不通用,MSSQLSERVER2008的函数不知道能不能用;
MSSQL里要实现比较简单,直接拼接字符串生成就好了.

---不行的话你换成相应数据库函数相同方法拼接下就好了

--上面自增变量复制错了,如下:
DECLARE @I INT
SET @I=1
WHILE @I<=400
BEGIN
UPDATE recipe SET photo_E_L='r'+RIGHT('000'+RTRIM(CAST(@I AS VARCHAR(3))),3)+'.png'
WHERE id=32
SET @I=@I+1
END

追问

貌似不行啊!我数据库直接卡掉了,还有UPDATE recipe SET photo_E_L='r'+RIGHT('000'+RTRIM(CAST(@I AS VARCHAR(3))),3)+'.png' 这句不太明白,可否解释?

追答

UPDATE recipe SET photo_E_L='r'+RIGHT('000'+RTRIM(CAST(@I AS VARCHAR(3))),3)+'.png'
既是循环更新photo_E_L为生成的字符='r001.png' --第一次
拼接字符串:
CAST(@I AS VARCHAR(3)) --把i转换成varchar(3)型;
RTRIM(CAST(@I AS VARCHAR(3)))--去除右边空格符
RIGHT('000'+RTRIM(CAST(@I AS VARCHAR(3))),3)--取右边开始的3个字符
--也可用substring函数
其实如果换成这样:
DECLARE @I INT
SET @I=1
WHILE @I<=400
BEGIN
PRINT 'r'+RIGHT('000'+@I,3)+'.png'
SET @I=@I+1
-- update recipe set photo_E_L='r032.png' where id=32,(t_sql该行为注释语句)
END
-----生成的就是以下结果:
r1.png
r2.png
r3.png
r4.png
r5.png
r6.png
r7.png
r8.png
...
r397.png
r398.png
r399.png
r400.png
-----------
不行的话 方法可以参考下.

第5个回答  2011-09-12 看不懂什么意思
set rs=conn.execute("select id from member where name='rain'")
if not rs.eof then
i=4000
do while not rs.eof
i=i+1
conn.execute("update member set id="&i&" where id="&rs("id"))
rs.movenext
loop
end if

这是一个唯一值,你要给你的记录加上一个唯一值才可以执行这种操作的
2011年

以上是关于数据库一列插入多行数据,需要不断循环400次update。的主要内容,如果未能解决你的问题,请参考以下文章

将数据从多行插入一行mysql

SQL Server 转置(可能是转置?)多行到一列

【网络协议笔记】第四层:传输层(Transport)以及UPD协议简介

laravel 在多行中插入数据,并在一个循环中从 API 获取 [关闭]

java怎么将选中的多行数据插入表中

mysql 一次插入多行不同的数据