首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL中通过子表中的数据过滤父表

在MySQL中通过子表中的数据过滤父表
EN

Stack Overflow用户
提问于 2018-03-13 17:24:10
回答 3查看 230关注 0票数 1

有两张桌子可以追踪棒球运动员及其位置。

播放器

代码语言:javascript
运行
复制
+----+----------
| id | name    
+----+----------
|  1 | Boggs    
|  2 | Mattingly
|  3 | Judge
|  4 | Martinez
|  5 | Rodriguez

位置

代码语言:javascript
运行
复制
+----+----------+-----------+
| id | player_id |   position   
+----+----------+-----------+
|  1 | 1        | Pitcher   
|  2 | 1        | Third Base    
|  3 | 2        | First Base  
|  4 | 3        | Second Base    
|  5 | 3        | Pitcher     

所以博格斯是一个投手,打第三垒,而马塔利只打第一页,而裁判是一个皮瑟和二垒手。

在MySQL中是否有一种方法可以只让那些不是投手的球员上场?因此,这个样本的结果应该是非常重要的。

我当然做不到..。

代码语言:javascript
运行
复制
select id from Player where id not in (select player_id from Position where position = 'Pitcher')

因为博格斯和法官会有好感的回报。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-13 17:27:55

代码语言:javascript
运行
复制
select p.* from player p
join position pn on p.id = pn.player_id
where pn.position not in ('Pitcher')
票数 2
EN

Stack Overflow用户

发布于 2018-03-13 17:27:37

你试过:

代码语言:javascript
运行
复制
select id from Player where id not in 
    (select player_id from Position WHERE position = 'Pitcher')
票数 1
EN

Stack Overflow用户

发布于 2018-03-13 17:43:29

您需要将表名从'Position'更改为'Positions',因为它不应该具有与列名相同的名称。一旦完成,您应该能够在上面的答案中使用查询。

代码语言:javascript
运行
复制
select id from Player where id not in 
(select player_id from Position WHERE position = 'Pitcher')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49262265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档