当前位置:  开发笔记 > 数据库 > 正文

SQLite:使用一个替换复制前一行的所有值

如何解决《SQLite:使用一个替换复制前一行的所有值》经验,为你挑选了1个好方法。

使用SQLite我需要从表中复制几乎所有现有行,对单个列进行更改,然后将新行插入表中.大致相似的东西

INSERT INTO $tablename (c1, c2, ... , cn) 
    SELECT (c1, c2, ... , cn) FROM $tablenam

我尝试将一些值ci替换为SELECT列列表.如果值是float或整数,则此方法有效,但如果是字符串则不行.如果值是一个字符串,SQLite会将其解释为列名,这自然不存在,并且我收到错误.

我可以编写代码来执行此操作,但我希望在一个查询中执行此操作.

如果相关,我目前正在编码tcl.

谢谢,

肖恩



1> jitter..:

你的意思是这不起作用?

INSERT INTO $tablename (c1, c2, ... , cn)
    SELECT (c1, c2, ..., "othervalue", ... , cn) FROM $tablename

你是如何构建查询的?

伪代码,例如,这将无效,因为othervalue被解释为columnname

dothquery("INSERT INTO $tablename (c1, c2, ... , cn)
        SELECT (c1, c2, ..., othervalue, ... , cn) FROM $tablename")

虽然这是有效的,因为其他"值包含在转义格式中,然后sqllite应该将它识别为表达式不再作为列名

dothquery("INSERT INTO $tablename (c1, c2, ... , cn)
        SELECT (c1, c2, ..., \"othervalue\", ... , cn) FROM $tablename")

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有