PHP - 以与调用的顺序相同的顺序返回mysql行

时间:2014-04-26 03:37:09

标签: php mysql sql

我正在尝试使用SELECT查询来选择3行,但我希望它们的顺序与我为它们调用的顺序相同。这就是我试图做的事情:

$array = array("50", "23", "67");
$list = implode(",", $array);

foreach($db->query("SELECT * FROM champs WHERE id IN ($list) ORDER BY 
    DECODE(id, $array[0], 1, $array[1], 2, $array[2], 3)") as $row) {
    //Do stuff
}   
然而,我得到了:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax

有没有办法确保它总是以我称之为的顺序返回?

1 个答案:

答案 0 :(得分:1)

decode()是Oracle函数,而不是MySQL函数。您应该使用case,它适用于两个数据库:

SELECT *
FROM champs
WHERE id IN ($list)
ORDER BY (CASE WHEN id = $array[0] THEN 1
               WHEN id = $array[1] THEN 2
               WHEN id = $array[2] THEN 3
          END);
相关问题