sqlite update 多行

sunjun888888 2017-06-27 01:20:31
表A:
id name defaultvalue
1 a
2 b
3 c
4 d
5 f

现在已经准备好了 defaultvalue{10,7,12,15,14}的值,怎么一条语句直接把准备好的defaultvalue值更新表A中的defaultvalue字段中
效果
id name defaultvalue
1 a 10
2 b 7
3 c 12
4 d 15
5 f 14

这只是个例子,实际有很多数据,不可能手动复制上去

...全文
788 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjun888888 2017-06-27
  • 打赏
  • 举报
回复
没有参照上面两位的方法,不过还是辛苦大家了,我最终实现方法是直接硬编码集合实现的
吉普赛的歌 2017-06-27
  • 打赏
  • 举报
回复
创建sqlite的临时表, 将值插入到临时表, 再根据临时表更新这个表即可
二月十六 2017-06-27
  • 打赏
  • 举报
回复
不知道sqlite和mssql区别,大概意思就是把defaultvalue变成一个可以关联的临时表,和原来的表有对应关系,然后再进行update
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[name] nvarchar(21),[defaultval] NVARCHAR(100))
Insert #T
select 1,N'a',null union all
select 2,N'b',null union all
select 3,N'c',null union all
select 4,N'd',null union all
select 5,N'f',null
Go
--测试数据结束
DECLARE @defaultvalue NVARCHAR(MAX)= '10,7,12,15,14';
;WITH cte
AS ( SELECT f1 ,
ROW_NUMBER() OVER ( ORDER BY f1 ) AS num
FROM dbo.f_splitstr(@defaultvalue, ',')
)
UPDATE #T
SET defaultval = cte.f1
FROM cte
WHERE cte.num = id
SELECT *
FROM #T


ALTER FUNCTION dbo.f_splitstr(@SourceSql   NVARCHAR(MAX),@StrSeprate   VARCHAR(100))   
RETURNS @temp TABLE(F1 VARCHAR(100))
AS
BEGIN
DECLARE @ch AS VARCHAR(100)
SET @SourceSql=@SourceSql+@StrSeprate
WHILE(@SourceSql<>'')
BEGIN
SET @ch=LEFT(@SourceSql,CHARINDEX(@StrSeprate,@SourceSql,1)-1)
INSERT @temp VALUES(@ch)
SET @SourceSql=STUFF(@SourceSql,1,CHARINDEX(@StrSeprate,@SourceSql,1),'')
END
RETURN
END
GO


22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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