在一个查询中选择一个值并更新状态

时间:2017-02-24 13:22:16

标签: mysql

我想选择第一个可用值'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);

4 个答案:

答案 0 :(得分:0)

不,您无法在更新语句中返回值,因此,如果您要执行2个操作(选择和更新),则需要进行2次查询。

答案 1 :(得分:0)

不需要选择......

include FactoryGirl::Syntax::Default

答案 2 :(得分:0)

如果您不希望返回<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label class="btn agentBtn"> <input type="radio" id="agent" name="advanced-search-beds" checked >Agent </label> <label class="btn ownerBtn"> <input type="radio" id="owner" name="advanced-search-beds">Owner </label> <label class="btn otherBtn"> <input type="radio" id="other" name="advanced-search-beds">Other </label>,则只能执行name声明。它将返回已更新的UPDATE行。

假设count是主键,根据返回的计数,您可以检查是否存在行(例如,如果id为0则行不存在且如果{ {1}}为1,存在行。这将与count

一样好

答案 3 :(得分:0)

试试这个

  update my_table set active = 'Y' 
  where id in 
 (select id from (SELECT id, name FROM my_table WHERE active='N' LIMIT 1)h);