[英]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.