【问题标题】:sqlite - how to insert a record using a subselectsqlite - 如何使用子选择插入记录
【发布时间】:2015-05-12 20:13:11
【问题描述】:

我有下表:

CREATE TABLE group_members(id integer primary key AUTOINCREMENT, group_id integer, member_id integer, FOREIGN KEY (member_id) REFERENCES users(id));

我正在尝试通过从user 表中选择group_id 的值,然后传入member_id 的值,将记录插入group_members 表。

 insert into group_members (group_id, member_id) 
 values (select id from users where code ='12345' and location='multiple', 281);

281 是我要传入的成员 ID。

但我收到以下错误消息:

错误:“选择”附近:语法错误

你能指出我正确的方向吗?

【问题讨论】:

  • 我必须检查其文档以查看 SQLite 是否接受值列表中的子查询,但如果接受,那么我希望您需要将子查询括在其自己的括号中。
  • 试试这个:INSERT INTO group_members(group_id, member_id) VALUES ( (SELECT id FROM users WHERE code = '12345' AND location = 'multiple'), 281)(不确定 SQLite 是否支持这个,但这是我要开始的地方)。
  • @JohnBollinger 修复了它。谢谢。

标签: sql sqlite subquery


【解决方案1】:

子查询必须写在括号中。您查询中的括号已经属于 VALUES 子句,因此您需要另一对:

INSERT INTO group_members (group_id, member_id)
VALUES ((SELECT id FROM users WHERE code ='12345' AND location='multiple'), 281);

或者,使用其他形式的 INSERT 语句,它使用查询而不是 VALUES 子句:

INSERT INTO group_members (group_id, member_id)
SELECT id, 281 FROM users WHERE code ='12345' AND location='multiple';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 2021-12-18
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多