第一次在PDO中使用CASE(mySQL数据库)

我正在尝试按日期排序,但前提是该日期未注册(可以)

但这似乎完全忽略了此案。我在做什么错?

$sql = 'SELECT * FROM mytable WHERE groupid = '.$groupid.' ORDER BY CASE WHEN groupdate != "0000-00-00" THEN groupdate END ASC';

$STH = $conn->query($sql);

if ($STH->rowCount() > 0) {

    while ($row = $STH->fetch()) {

        // output the rows

    }

} else {

    echo '<p>No dates found!</p>';

}

最佳答案

您想对零日期行做什么?
在其他行之后还给他们吗?
然后使用此查询

SELECT *
FROM mytable
WHERE groupid = $groupid
ORDER BY groupdate = '0000-00-00', groupdate


groupdate ='0000-00-00'是布尔表达式,对于匹配的行返回1,对于不匹配的行返回0。 0按升序排在1之前。
非零行按groupdate排序。

10-08 20:19