sqlite - 如何插入但从多个表中获取数据

标签 sqlite

我有一个简单的SQL插入查询,但是其中两个数据全部来自其他两个表,

我知道如何从插入的一个表中获取数据,但是如何从两个表中获取数据?

示例(一个表数据)

INSERT INTO TABLE (COL1, COL2, COL3)
SELECT :COL1, :COL2, TABLE2.ID
FROM TABLE2
WHERE TABLE2.NAME = :LEVEL0


上面的工作正常,并将相关数据从table2中拉出,问题是我需要添加第三个表。

INSERT INTO TABLE (COL1, COL2, COL3, COL4)
SELECT :COL1,
       :COL2,
       (TABLE2.ID FROM TABLE2 WHERE TABLE2.NAME = :LEVEL0),
       (TABLE3.ID FROM TABLE3 WHERE TABLE3.NAME = :LEVEL1)


不起作用,我得到SQL错误

最佳答案

子查询是查询,因此它们需要自己的SELECT:

INSERT INTO TABLE (COL1, COL2, COL3, COL4)
SELECT :COL1,
       :COL2,
       (SELECT ID FROM TABLE2 WHERE NAME = :LEVEL0),
       (SELECT ID FROM TABLE3 WHERE NAME = :LEVEL1);


而且,当所有值都由子查询计算时,您无需使用INSERT的SELECT形式:

INSERT INTO TABLE (COL1, COL2, COL3, COL4)
VALUES(:COL1,
       :COL2,
       (SELECT ID FROM TABLE2 WHERE NAME = :LEVEL0),
       (SELECT ID FROM TABLE3 WHERE NAME = :LEVEL1));

关于sqlite - 如何插入但从多个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989004/

相关文章:

objective-c - NSString stringWithFormat不必要的结果

sqlite - Laravel-无法访问数据透视表数据

java - Android 中的 SQLite 删除查询

c# - 在 Entity Framework Core 中禁用延迟加载

android - SQLite 查询性能

Android 和 SQLite,设备读取数据库时出错

android - ContentProvider 数据库未被删除

sql - 我如何找出在 sqlite 中删除表的正确顺序?

c# - 将sqlite数据库同步到MYSQL数据库

sqlite - 退出 SQLite 3 数据库