gpt4 book ai didi

sql - 如何在 SqLite 的一个查询中更新和选择一行?

转载 作者:可可西里 更新时间:2023-11-01 07:31:52 27 4
gpt4 key购买 nike

我想在 SqLite 的一个查询中更新并选择一行。在 MySql 中,我想要的查询如下所示:

SET @update_id := -1;
UPDATE data SET `Status` = 'running', Id = (SELECT @update_id := Id)
WHERE `Status` = 'scheduled' LIMIT 1;
SELECT * FROM data WHERE id=@update_id;"

上面的查询会将Status设置为'running',并将变量@update_id的值设置为修改行的Id对于 Status 为“scheduled”的第一行,然后使用变量 @update_id 获取完整的修改行。

重要的一点是我需要选择被UPDATE语句修改过的行

但据我所知,SqLite 不支持变量。

如何为 SqLite 重写上面的 MySQL 查询?

最佳答案

您需要declare and use variables in whatever program you write that runs SQLite statements .

幸运的是,您可以使用 bind variables in SQLite :

//1.  Fetch the id into whatever language you are using:
SELECT id FROM DATA WHERE status = 'scheduled' LIMIT 1;

//2. Retrieve the id value from Step 1's resultset
int id = [id value from the resultset];

//3. Construct the update statement
parsed_sql_stmt stmt = parse_sql(UPDATE DATA SET STATUS = 'running' WHERE ID = ?);

//4. Execute update statement
exec_stmt(stmt, id);

//5. Select everything in the DATA table for that record
stmt = parse_sql(SELECT * FROM DATA WHERE id = ?);
exec_stmt(stmt, id);

绵羊模拟器是对的——这是三个独立的陈述。

关于sql - 如何在 SqLite 的一个查询中更新和选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com