Heim > Fragen und Antworten > Hauptteil
Mein Formular:
表格1 练习 | primaryMuscleGroup | motionName | | ------------------ | -------------- ------| | 胸部 | 双杠臂屈伸 | | 胸部 | 卧推 | | 胸部 | 俯卧撑 | | 胸部 | 飞鸟 | | 腿部 | 深蹲 | | 腿部 | 弓步 | | 背部 | 硬拉 | 表格2 健身记录 | name | motionName | | ------------------ | -------------- ------| | 约翰·史密斯 | 双杠臂屈伸 | | 莎莉 | 深蹲 | | 华莱士 | 弓步 | | 克里斯托夫 | 硬拉 |
Die Abfrage sollte alle Übungen für Muskelgruppen zurückgeben, die eine Person nicht gemacht hat. Wenn wir beispielsweise die Abfrage für den Kunden „John Smith“ ausführen, sollten wir Folgendes zurückgeben:
| primaryMuscleGroup | motionName | | 腿部 | 深蹲 | | 腿部 | 弓步 | | 背部 | 硬拉 |
Wenn wir die Abfrage für den Kunden „Sally“ ausführen, sollten wir Folgendes zurückgeben:
| primaryMuscleGroup | motionName | | ------------------ | -------------- ------| | 胸部 | 双杠臂屈伸 | | 胸部 | 卧推 | | 胸部 | 俯卧撑 | | 胸部 | 飞鸟 | | 背部 | 硬拉 |
P粉6429198232023-09-15 19:56:41
您可以使用外连接或者使用not exists
来实现,看看下面的查询是否符合您的需求:
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 )
P粉3889454322023-09-15 12:46:32
SELECT * FROM excercises t1 WHERE NOT EXISTS ( SELECT NULL FROM fitnessRecords t2 JOIN excercises t3 USING (motionName) WHERE t2.name = '给定的名字' AND t1.primaryMuscleGroup = t3.primaryMuscleGroup )
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=eb216b7579d5fcd0c0ab628717f3d676