Mysql 在一个查询中选择一个值并更新状态
我想选择第一个可用值“name”,并将其设置为take。可以在一个查询中完成吗 这是我在两个查询中要做的:Mysql 在一个查询中选择一个值并更新状态,mysql,Mysql,我想选择第一个可用值“name”,并将其设置为take。可以在一个查询中完成吗 这是我在两个查询中要做的: my_table id, name, active $sql="SELECT id, name FROM my_table WHERE active='N' LIMIT 1"; $result = mysqli_query($con, $sql); $row = mysqli_fetch_array($result); $id=$row["id"]; $name=$row["name"
my_table
id, name, active
$sql="SELECT id, name FROM my_table WHERE active='N' LIMIT 1";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
$id=$row["id"];
$name=$row["name"];
$sql="UPDATE my_table SET active='Y' WHERE id=$id";
$result=mysqli_query($con, $sql);
不,不能在update语句中返回值,因此如果要执行两个操作选择和更新,则需要两个查询。不需要选择
UPDATE my_table
SET active = 'Y'
WHERE active = 'N'
ORDER
BY id
LIMIT 1;
若不希望返回名称,那个么只能执行UPDATE语句。它将返回更新的行数
假设id是主键,根据返回的计数,您可以检查行是否存在,例如,如果计数为0,则行不存在,如果计数为1,则行存在。这与从my_表中选择*一样好,其中id=$id试试这个
update my_table set active = 'Y'
where id in
(select id from (SELECT id, name FROM my_table WHERE active='N' LIMIT 1)h);
您的第一个SELECT查询对我来说似乎有些不确定。你不应该在那里使用排序吗?选择的意义何在?我想获得名称值,当然还有更新的ID。如果没有排序,你想知道选择限制1的排序有点毫无意义,然后查看下面的@草莓答案。通过限制1,我理解得到满足条件的一行。我不知道为什么这是错误的?我应该使用“按活动限制1排序”吗?我仍然需要使用“选择查询…”。。。如何获取名称值?我不明白您的意思,正如我所说,我还需要知道名称值,但UPDATE is只返回实际更改的行数。看起来r0b0urd0n是对的,我需要两个查询。我不擅长mysql,所以我认为它可以在一个查询中完成。我一开始就说了,我想选择第一个可用值“name”。。。。很抱歉,这还不够清楚,而且从我的两个问题中,你可以看到我想做什么:-我建议你看看。r0b0urd0n可能是正确的,但无论如何,您当前的代码都有缺陷。