首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抓取两个表之间的相关行?

如何抓取两个表之间的相关行?
EN

Stack Overflow用户
提问于 2022-02-14 20:37:10
回答 2查看 26关注 0票数 -1

我的桌子:

代码语言:javascript
复制
Table 1
excercises

| primaryMuscleGroup | motionName           |
| ------------------ | -------------- ------|
| Chest              | Dips                 |
| Chest              | Chest Press          |
| Chest              | Push Up              |
| Chest              | Flye                 |
| Legs               | Squat                |
| Legs               | Lunge                |
| Back               | Deadlift             |

Table 2
fitnessRecords

| name               | motionName           |
| ------------------ | -------------- ------|
| John Smith         | Dips                 |
| Sally              | Squat                |
| Wallace            | Lunge                |
| Christoph          | Deadlift             |

查询应该为一个人返回他们没有做过的肌肉群的所有练习。例如,如果我们运行对客户端"John“的查询,我们应该返回:

代码语言:javascript
复制
| primaryMuscleGroup | motionName           |
| Legs               | Squat                |
| Legs               | Lunge                |
| Back               | Deadlift             |

如果我们运行对客户端"Sally“的查询,我们应该返回:

代码语言:javascript
复制
| primaryMuscleGroup | motionName           |
| ------------------ | -------------- ------|
| Chest              | Dips                 |
| Chest              | Chest Press          |
| Chest              | Push Up              |
| Chest              | Flye                 |
| Back               | Deadlift             |
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-14 20:51:31

代码语言:javascript
复制
SELECT *
FROM excercises t1
WHERE NOT EXISTS ( SELECT NULL 
                   FROM fitnessRecords t2
                   JOIN excercises t3 USING (motionName)
                   WHERE t2.name = 'given name'
                     AND t1.primaryMuscleGroup = t3.primaryMuscleGroup )

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=eb216b7579d5fcd0c0ab628717f3d676

票数 1
EN

Stack Overflow用户

发布于 2022-02-14 20:56:20

您可以使用外部联接或not exists来完成,查看以下内容是否满足您的需要:

代码语言:javascript
复制
select * 
from exercises e
where not exists (
  select * from exercises x 
    where exists (
      select * from fitnessRecords fr
      where fr.name = 'john smith' and fr.motionName = x.motionName
    ) and x.primaryMuscleGroup = e.primaryMuscleGroup
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71118007

复制
相关文章

相似问题

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