mysql - 如何将特定值放入 View 中?

标签 mysql sql database

我有一个玩家表,其中包含有关玩家的 ID、姓名等信息。我还有一个表players_achievements,看起来像

playerid | shortname | score
----------------------------------
    1    | someName  | someScore
    1    | otherName | otherScore
    1    | FOTOCASH  | integerValue
    2    | someName  | someScore
    2    | otherName | otherScore
    2    | FOTOCASH  | integerValue
   ...

我知道这很愚蠢,我没有创建这个,但是当短名称等于 FOTOCASH 时我必须获得分数。使用它很容易完成

从players_achievements中选择分数,其中playerid = id AND Shortname = 'FOTOCASH'

但是我必须在某个 View 中执行此操作,如果返回值不存在,我想插入“否”。 所以我尝试:

CASE players_achievements.playerid
    WHEN players.id THEN 
        CASE players_achievements.shortname
            WHEN 'FOTOCASH' THEN CONCAT(players_achievements.score, ' $')
        END
    ELSE 'No'
END AS 'Fotocash'

但这效果并不好。现在我有 7 行(因为每个玩家在成就表中最多可以有 8 行),其值 None 和一个具有所需值 Fotocash

playerid | Fotocash | rest of columns
-------------------------------
    1    |   Null   | rest of values
    1    |   Null   | rest of values
    1    |  17500$  | rest of values
    2    |   Null   | rest of values
    2    |   3000$  | rest of values
    2    |   Null   | rest of values
...

我想要这个看起来像

playerid | Fotocash | rest of columns
-------------------------------------
    1    |  17500$  | rest of values
    2    |   3000$  | rest of values
...

我使用了 RIGHT JOIN,但也尝试了 INNER 和 LEFT

RIGHT JOIN `db`.`players_achievements` on((`db`.`players_achievements`.`playerid` = `db`.`players`.`id`))

最佳答案

如果没有您的其余查询,我猜测,但是使用有什么问题

WHERE Fotocash IS NOT NULL

(如果可以的话,坚持使用 LEFT JOIN,它通常会让事情变得更容易......假设左 watch 是您的主要数据源)

关于mysql - 如何将特定值放入 View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494191/

相关文章:

sql - #1093 表 'table' 被指定了两次,既作为 'DELETE' 的目标又作为数据的单独源

mysql - Postgresql 中用户权限的最佳实践?

mysql - 如何查询两个mysql表的一个字段的总和

python - 如何从 Django 的两列中获取最新的时间戳

MySQL 从查询中设置变量并在另一个查询中使用它

带元组的 MySQL CASE 语句

php - Mysql通过取错时间戳查询分组

c# - 如何显示来自两个不同表的日期?

python - 动态计算一年中每周前 3 周的值

database - 如何解析ORA-011033 : ORACLE initialization or shutdown in progress