有没有办法结合这两个MySQL语句?

时间:2011-07-27 21:03:33

标签: mysql sql select sql-update

我想运行一个向qa_votes字段添加1的查询,然后检索该字段的结果值,以便我可以在前端显示它。

所以代码草案将是

    $this->db->query("
    UPDATE  qa
    SET     qa_votes = qa_votes +1
    WHERE   qa_id = $question_id;
    ");

接着是

    $query = $this->db->query("
    SELECT  qa_id, qa_votes
    FROM    qa
    WHERE   qa_id = $question_id;
    ");

有没有办法将这两个组合成一个查询?

3 个答案:

答案 0 :(得分:7)

简短回答:不。

长答案:没有开箱即用的命令。 UPDATE命令不提供此功能。但是,您可以编写一个更新的Stored Procedure,然后将结果带回来。

答案 1 :(得分:1)

是。您可以使用LAST_INSERT_ID

  

如果expr作为LAST_INSERT_ID()的参数给出,则该函数返回该参数的值,并将其记为LAST_INSERT_ID()返回的下一个值

所以你可以这样做:

$this->db->query("
UPDATE  qa
SET     qa_votes = LAST_INSERT_ID(qa_votes +1)
WHERE   qa_id = $question_id;
");

其次是

$query = $this->db->query("SELECT LAST_INSERT_ID()");

您使用的MySQL API可能有一个快捷方式来检索最后一个(例如PHP中的mysql_insert_id())。

答案 2 :(得分:0)

只需将它们组合成一个SQL字符串吗?

 $query = $this->db->query("
    UPDATE  qa
    SET     qa_votes = qa_votes +1
    WHERE   qa_id = $question_id;

    SELECT  qa_id, qa_votes
    FROM    qa
    WHERE   qa_id = $question_id;
    ");