mysql - SQL 中的 IF/CASE 语句

标签 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
    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/

相关文章:

mysql - 2 列以 MUL 作为键?

python - 基于Python中的公共(public)列合并两个文本文件

sql - 如何根据日期获得确切年龄

mysql - 将多行合并为一行 MySQL 并在同一查询中将值从一个字段拆分为两个

php - 根据进出时间计算迟到/早到时间

mysql - 统计 ID 如何具有相同的连接组合?

mysql - 如何有效地选择基于 SQL 中不同时间戳计算的多个总和的平均总和?

mysql - 如何在 Hibernate 4 中使用 Mysql 中的 jpa 动态添加列?

mysql - MYSQL中的触发器根据插入的值更新不同的列

PHP MySQL 希腊字母显示为 ????分数