php - 如何在过去某一年不存在的 mysql 行上 LEFT JOIN?
问题描述
我有两个表,我将列出表名和相关字段:
PLAYERS:
playerid
STATS:
statsid
playerid
year
每次玩家在游戏中积累统计数据,它就会在stats
表格中放置一行并记录年份。
现在,我想得到一个表中所有players
在 2016 年及以后没有记录任何统计数据的球员的名单。
我尝试了 LEFT JOIN 但并不真正了解我在做什么并且无法使其正常工作。这是我尝试过的事情之一,不要笑
SELECT * FROM `players` LEFT JOIN `stats` ON players.playerid = stats.playerid where count(*) = 0 and stats.year >= 2016
解决方案
看来您不知道存在的语法,例如:
select *
from players p
where not exists (select 1
from stats s
where s.playerid = p.playerid
and s.year >= 2016)
显示那些年统计表中不存在的球员,易于理解和记忆。
推荐阅读
- regex - 可以使用 NLP 吗?自然语言处理
- sql - 在 Laravel 中同时使用 group by 和 count 以及 where 查询
- reactjs - 在同一存储库中的 github 页面前端和后端部署 React 应用程序
- r - 找出异常值并将它们设置为 NA
- javascript - Bot Framework V4 - TypeError:无法在已撤销的代理上执行“获取”
- c++ - 如何将 C++ 权重向量添加到 C++ 中的 caffe 模型
- python - ModuleNotFoundError:没有名为“tensorflow”的模块,即使安装了 tensorflow
- ios - 在过滤器选择上存储数据
- asp.net-mvc - 在 html 和 javascripts 中处理包含 Razor 语法的字符串
- scala - SpringDataForCassandra:当 Int 列在 DB 中设置为空时,实体中的 NullPointerEx