首页 > 解决方案 > 如何在过去某一年不存在的 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

标签: phpmysql

解决方案


看来您不知道存在的语法,例如:

select * 
from players p 
where not exists (select 1 
                  from stats s 
                  where s.playerid = p.playerid
                    and s.year >= 2016)

显示那些年统计表中不存在的球员,易于理解和记忆。


推荐阅读