我想要这样的东西。但我不知道正确的语法。
select id from table1
where name = (insert into table1 (name) values ('value_abcd'))
答案 0 :(得分:0)
当你说:
WHERE something = somethingElse
somethingElse
是一个表达式(something
也是如此,但无论如何)。您正在尝试使用INSERT
语句作为somethingElse
,但INSERT
语句不会返回任何内容,因此无法将其作为表达式进行求值。因此,不仅是你试图使语法无效,它在伪代码方式中也没有任何意义。
也许如果你能够更清楚地解释你想做什么(以及为什么),有人可以为你推荐一些东西。
答案 1 :(得分: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。
答案 2 :(得分:0)
如果表的id
列设置为identity,则在SQL
insert into table1(name) value('name')
select SCOPE_IDENTITY()
它将返回上次自动生成的idetity值
如果id
列未设置为标识,则在SQL
insert into table1(name)
output inserted.id
value('name')
它将返回在单个语句中插入的所有id
值。