繁体   English   中英

如何在sqlite的SELECT语句中将INSERT用作子查询?

[英]How can i use INSERT as subquery in SELECT statement in sqlite?

我想要这样的东西。 但是我不知道正确的语法。

select id from table1
where name = (insert into table1 (name) values ('value_abcd'))

当你说:

WHERE something = somethingElse

somethingElse是一个表达式(所以是something ,但无论如何)。 您试图将INSERT语句用作somethingElse ,但是INSERT语句不返回任何内容,因此不能将其评估为表达式。 因此,您不仅尝试使语法无效,而且以伪代码的方式也没有任何意义。

也许,如果您可以尝试更清楚地说明您要做什么(以及原因),那么有人可以为您提供一些建议。

因此,您有一个带有自动递增主键的表,并且您想在插入记录后知道其值。

在SQL中,可以使用last_insert_rowid函数:

INSERT INTO table1(name) VALUES('value_abcd');
SELECT last_insert_rowid();

但是,在大多数情况下,您不需要执行单独的SELECT查询,因为大多数库都有一些函数可以返回该值。 例如,SQLite的C API具有sqlite3_last_insert_rowid函数,而Android的insert函数则直接返回ID。

如果将表的id列设置为标识,则在SQL中

insert into table1(name) value('name')
select SCOPE_IDENTITY()

它将返回上一次自动生成的理想值

如果未将id列设置为标识,则在SQL中

insert into table1(name)
output inserted.id
value('name')

它将返回插入到单个语句中的所有id值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM