mysql - SQL : Using CASE to select certain elements from two different tables

标签 mysql

我有两个表,一个包含分数,另一个包含游戏列表。游戏有不同类型的高分,例如高尔夫比赛是根据谁的得分最低来判定的。

我正在尝试列出某个用户与其他用户相比的高分(包括将高分视为最低分的游戏。)

我的旧查询只是假设所有分数都是最高分数,但现在我需要能够检查游戏的分数类型是否为“低”。我听说使用 CASE 可以解决这个问题,但我在尝试到达游戏 table 时遇到了困难。

SELECT s.game_id, fp.score
FROM game_scores s
INNER JOIN games g ON s.game_id = g.id
INNER JOIN (
    SELECT
        CASE
          WHEN g.score_type = low THEN MIN(score)
          WHEN g.score_type = high THEN MAX(score)
        END as score, game_id
    FROM game_scores
    GROUP BY game_id
) fp ON s.game_id = fp.game_id AND s.score = fp.score
WHERE s.user_id = 1

最佳答案

SELECT
    s.game_id, 
    CASE
        WHEN g.score_type = low  THEN MIN(s.score)
        WHEN g.score_type = high THEN MAX(s.score)
    END as score
FROM game_scores s
INNER JOIN games g ON s.game_id = g.id
WHERE s.user_id = 1
GROUP BY s.game_id, g.score_type

关于mysql - SQL : Using CASE to select certain elements from two different tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733792/

相关文章:

mysql - 针对另外两个表选择一个表中缺少的行?

php - 制作 'wish list' 功能的最佳方法

mysql - 使用外键进行双边行动

mysql - 使用 INSERT INTO ... ON DUPLICATE KEY 时绑定(bind) MySQL 变量

MySQL - 修复多条记录

PhP 检查 MySQL UPDATE 上的数据是否为空

php - 管理日期和天数的最佳实践

java - 为什么不能更新连接到我的 android 应用程序的 MySQL 数据库?

php - 如果电子邮件匹配,则使用 php 重定向

c# - 在需要条件的上下文中指定的非 bool 类型表达式,位于 'and' 附近。 C#