SQLite使用SELECT语句进行INSERT

3

我有一个插入查询的问题。我想要插入一些固定的值作为名称,同时也要插入一些计算出来的值。 一个简单的例子:

INSERT INTO Players 
VALUES('Name', 10.0, SELECT COUNT(*) AS Amount FROM Stack7 WHERE Name LIKE '%Name%', 1.0)

玩家列表:

CREATE TABLE `Players` (
    `Name`  TEXT,
    `Points`    REAL,
    `Games` REAL,
    `Result`    REAL
)

编译器报错: 附近有“SELECT”:语法错误。
1个回答

5
将您的选择放在方括号中:
INSERT INTO Players 
VALUES('Name', 
       10.0, 
       (SELECT COUNT(*) AS Amount FROM Stack7 WHERE Name LIKE '%Name%'), 
       1.0);

以此方式,编译器知道你的选择语句定义的一个值从何处开始,从何处结束。如果需要,在括号内可以使用逗号(,)。

真不可思议,原来如此简单!我已经花了大约2个小时在这上面了。有没有可能插入一个基于前两个值计算出来的值? 想象一下另一个SELECT返回的是一个名为Points的列,而不是10.0。我们能否将类似于(Columns/Amount)的内容放在最后插入的值(1.0)的位置?在上面的表单中,这样做不起作用——"没有这样的列:Points",它看不到这些选择。 - user2923339

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接