SQL中的IF / CASE语句

时间:2017-06-15 20:56:51

标签: mysql sql mysqli

我真的很难找到这个问题的答案。我想编写一个if或case语句来更改另一列中的值。如果列'check'为0,则列'points'也应为0。

SELECT club_name, COALESCE(club_winner,0) AS 'check', COUNT(*) AS points,
    CASE 
    WHEN check = '0'
    THEN points = '0'
    ELSE check 
    END as Saleable
    FROM clubs c
    LEFT JOIN club_results cr ON c.club_id = cr.club_winner
    GROUP BY club_name ORDER BY points DESC

2 个答案:

答案 0 :(得分:3)

你不能设置"在case语句中的列,您可以返回值。将case语句视为变量列。返回' 0' AS Saleable(或者您想要命名的任何列)。

SELECT club_name, COALESCE(club_winner,0) AS 'check', COUNT(*) AS points,
CASE 
WHEN COALESCE(club_winner,0) = 0
THEN 0
ELSE COUNT(*)
END AS points_or_0_if_check_is_0
FROM clubs c
LEFT JOIN club_results cr ON c.club_id = cr.club_winner
GROUP BY club_name ORDER BY points_or_0_if_check_is_0 DESC

答案 1 :(得分:0)

您可以选择仅计算与左连接匹配的行,如下所示:

SELECT
    club_name,
    COUNT(
        CASE WHEN
            club_winner IS NOT NULL
        THEN
            CR.id
        ELSE
            NULL
        END
    ) AS `points`
FROM
    clubs C
LEFT JOIN
    club_results CR ON C.club_id = CR.club_winner
GROUP BY
    C.club_id
ORDER BY
    points DESC