0

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

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

3 回答 3

0

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

在 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。

于 2013-08-28T13:42:34.333 回答
0

如果id表的列设置为标识,那么在 SQL

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

它将返回最后一个自动生成的身份值

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

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

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

于 2014-04-09T10:26:49.370 回答
0

当你说:

WHERE something = somethingElse

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

也许如果你能尝试更清楚地解释你正在尝试做什么(以及为什么),那么有人将能够为你提出一些建议。

于 2013-08-28T13:10:31.037 回答