我真的很难找到这个问题的答案。我想编写一个 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' 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
关于mysql - SQL 中的 IF/CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44576904/