Mysql SQL中的IF/CASE语句

Mysql SQL中的IF/CASE语句,mysql,sql,Mysql,Sql,我真的很难找到这个问题的答案。我想写一个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

我真的很难找到这个问题的答案。我想写一个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
不能在case语句中“设置”列,可以返回值。将case语句视为变量列。将“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 

你的意思是“当check='0'然后'0'否则点以点结束”?你想在表中更新它,还是简单地显示它?这是MySQL还是Transact-SQL?你不能在select子句的后面重用以前的列别名。哎呀,@Donnie。“思想检查”是一个常规专栏(上面遗漏了)
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