gpt4 book ai didi

MySQL 选择与相关表中的多行匹配的行

转载 作者:可可西里 更新时间:2023-11-01 08:16:57 25 4
gpt4 key购买 nike

下表要大得多,但为了便于提问而缩小了

表 1 - exercise_rolladex

Exercise_ID | Exercise_Name
---------------------------
1 Pushups
2 Turkish Get Ups
3 Squats
4 Ice Skater

表 2 - exercise_planes

Exercise_Plane_ID | Exercise_Plane
----------------------------------
1 Sagittal
2 Frontal
3 Transverse

表 3 - exercise_has_planes

Exercise_ID | Exercise_Plane_ID
-------------------------------
1 1
2 1
2 2
2 3
3 1
4 2
4 3

我的问题是:如何构造一个查询,在其中我可以找到具有 Exercise_Plane_ID=1 和 Exercise_Plane_ID=2 的每个练习的 Exercise_ID。换句话说,找到同时具有矢状面和额状运动平面的练习。

正确的查询

   SELECT e.Exercise_Name, p.Exercise_Plane 
FROM exercise_rolladex e
INNER JOIN exercise_has_planes h ON h.Exercise_ID=e.Exercise_ID
INNER JOIN exercise_planes p ON p.Exercise_Plane_ID=h.Exercise_Plane_ID
WHERE p.Exercise_Plane_ID IN(2,1)
GROUP BY e.Exercise_ID
HAVING COUNT(DISTINCT h.Exercise_Plane_ID ) >= 2

更新跟进问题那么我将如何排除呢?例如,找到 plane_id 为 2 和 3 的练习,但排除 plane_id 为 1 的练习(正确结果为“Ice Skater”)

我继续回答我自己的问题:

   SELECT e.Exercise_Name, p.Exercise_Plane 
FROM exercise_rolladex e
INNER JOIN exercise_has_planes h ON h.Exercise_ID=e.Exercise_ID
INNER JOIN exercise_planes p ON p.Exercise_Plane_ID=h.Exercise_Plane_ID
WHERE p.Exercise_Plane_ID IN(2,3)
AND e.Exercise_ID NOT IN
(SELECT Exercise_ID FROM exercise_has_planes WHERE Exercise_Plane_ID='1')
GROUP BY e.Exercise_ID
HAVING COUNT(DISTINCT h.Exercise_Plane_ID ) >= 2

感谢 Mr. Brownstones 在另一个问题中的回答。 SQL query to exclude items on the basis of one value

最佳答案

您可以这样做,这将使用您给定的输入 ID 检查计划 ID,并过滤掉每个练习组中的计数,如果计数返回超过 1,则表示练习有飞机,具有子句将满足以下场景两架飞机都在运动

SELECT e.Exercise_Name, 
p.Exercise_Plane
FROM exercise_rolladex e
INNER JOIN exercise_has_planes h ON h.Exercise_ID=e.Exercise_ID
INNER JOIN exercise_planes p ON p.Exercise_Plane_ID=h.Exercise_Plane_ID
WHERE p.Exercise_Plane_ID IN(2,1)
GROUP BY e.Exercise_ID
HAVING COUNT(DISTINCT h.Exercise_Plane_ID ) >= 2

Demo

关于MySQL 选择与相关表中的多行匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23509404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com