Mysql SQL中的IF/CASE语句
我真的很难找到这个问题的答案。我想写一个if或case语句来更改另一列中的值。如果列“check”为0,则列“points”也应为0Mysql 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
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