我想要这样的东西。但我不知道正确的语法。
select id from table1
where name = (insert into table1 (name) values ('value_abcd'))
因此,您有一个带有自动递增主键的表,并且您想在插入记录后知道它的值。
在 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
插入到单个语句中的所有值。
当你说:
WHERE something = somethingElse
somethingElse
是一个表达式(所以是something
,但无论如何)。您正在尝试将INSERT
语句用作您的somethingElse
,但INSERT
语句不返回任何内容,因此不能将其作为表达式进行评估。因此,无论您试图使语法无效,而且以伪代码的方式也没有任何意义。
也许如果你能尝试更清楚地解释你正在尝试做什么(以及为什么),那么有人将能够为你提出一些建议。