我有一个玩家表,其中包含有关玩家的 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/