MySQL:从一组中找出特定的记录
MySQL: Find out a specific record from a group
在客户table中,有customer_ID,姓名,性别,年龄,representative_id。我想为某个代表找出最年轻的男女顾客。
我用过
SELECT *,MIN(Age) FROM customer GROUP BY Rep_ID, 性别;
但是它returns每个组的第一个记录。如何在特定条件下从组中选择特定行?在这种情况下,其组的 age = min(age)。我应该使用加入吗?任何人都可以给我提示。提前谢谢你。
C_ID Name Sex Age Rep_ID
1 Person1 F 26 H3
2 Person2 M 40 H8
3 Person3 M 37 H5
4 Person4 F 51 H5
5 Person5 M 45 H5
6 Person6 F 37 H8
7 Person7 M 27 H8
8 Person8 M 36 H3
9 Person9 F 35 H5
10 Person10 M 30 H8
11 Person11 F 22 H3
12 Person12 F 28 H8
13 Person13 F 19 H3
14 Person14 M 41 H3
15 Person15 M 33 H5
16 Person16 F 34 H3
17 Person17 M 29 H8
18 Person18 F 50 H8
要解决这样的问题,您首先需要找到每个代表的最小 male/female 年龄。您可以通过使用 MIN()
函数并按性别和代表 ID 分组来做到这一点,如下所示:
SELECT rep_id, sex, MIN(AGE) AS youngestAge
FROM myTable
GROUP BY rep_id, sex;
一旦知道每个组中最小的年龄,就可以将该子查询连接回原始 table 以获取其余信息:
SELECT m.*
FROM myTable m
JOIN(
SELECT rep_id, sex, MIN(age) AS youngestAge
FROM myTable
GROUP BY rep_id, sex) tmp ON tmp.rep_id = m.rep_id AND tmp.sex = m.sex AND tmp.youngestAge = rep.age;
关于这方面的更多信息和类似的问题,您可以参考this页面。
在客户table中,有customer_ID,姓名,性别,年龄,representative_id。我想为某个代表找出最年轻的男女顾客。
我用过
SELECT *,MIN(Age) FROM customer GROUP BY Rep_ID, 性别;
但是它returns每个组的第一个记录。如何在特定条件下从组中选择特定行?在这种情况下,其组的 age = min(age)。我应该使用加入吗?任何人都可以给我提示。提前谢谢你。
C_ID Name Sex Age Rep_ID
1 Person1 F 26 H3
2 Person2 M 40 H8
3 Person3 M 37 H5
4 Person4 F 51 H5
5 Person5 M 45 H5
6 Person6 F 37 H8
7 Person7 M 27 H8
8 Person8 M 36 H3
9 Person9 F 35 H5
10 Person10 M 30 H8
11 Person11 F 22 H3
12 Person12 F 28 H8
13 Person13 F 19 H3
14 Person14 M 41 H3
15 Person15 M 33 H5
16 Person16 F 34 H3
17 Person17 M 29 H8
18 Person18 F 50 H8
要解决这样的问题,您首先需要找到每个代表的最小 male/female 年龄。您可以通过使用 MIN()
函数并按性别和代表 ID 分组来做到这一点,如下所示:
SELECT rep_id, sex, MIN(AGE) AS youngestAge
FROM myTable
GROUP BY rep_id, sex;
一旦知道每个组中最小的年龄,就可以将该子查询连接回原始 table 以获取其余信息:
SELECT m.*
FROM myTable m
JOIN(
SELECT rep_id, sex, MIN(age) AS youngestAge
FROM myTable
GROUP BY rep_id, sex) tmp ON tmp.rep_id = m.rep_id AND tmp.sex = m.sex AND tmp.youngestAge = rep.age;
关于这方面的更多信息和类似的问题,您可以参考this页面。