Mysql 使用单个查询更新选定的行

Suj*_*n R 5 php mysql

我必须从book(id,book_id,status)状态为的表中选择 3 行status=0。最初所有行都有status0。所以通过使用 select query.order by id 和 limit 3 我可以选择前 3 行。问题是如何将选定的行状态更新为1,因为它们被选中。

正在使用 PHP、CodeIgniter 和 MySQL,我可以在单个查询中完成吗?

例子:

id  book_id  status 
1     100      0
2     101      0
3     102      0
4     103      0
5     104      0
6     105      0
Run Code Online (Sandbox Code Playgroud)

选择前 3 行后,该行的状态应更新为 1

id  book_id  status 
1     100      1
2     101      1
3     102      1
4     103      0
5     104      0
6     105      0
Run Code Online (Sandbox Code Playgroud)

Arn*_*ane 1

是的你可以。

UPDATE book
SET status = 1
WHERE id IN (
  SELECT id FROM book
  LIMIT 3
)
Run Code Online (Sandbox Code Playgroud)