Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-加入1中的组,记录一列的最小值和另一列的最大值_Mysql_Sql_Join_Inner Join - Fatal编程技术网

MySQL-加入1中的组,记录一列的最小值和另一列的最大值

MySQL-加入1中的组,记录一列的最小值和另一列的最大值,mysql,sql,join,inner-join,Mysql,Sql,Join,Inner Join,我有一张会员表(会员id、姓名等)和一张会员表(id、会员id、会员开始日期、会员到期日期),关系为一对多,因为每年每个会员都有一个新的会员条目 当我这样做时: SELECT * FROM members INNER JOIN membership ON members.member_id = membership.member_id 我为每个成员获取多个记录。如何将每个成员的记录分组为一个记录,其中包含成员资格开始日期的最小值和成员资格到期日期的最大值? 谢谢。您可以从成员的派生表中进行聚合

我有一张会员表(会员id、姓名等)和一张会员表(id、会员id、会员开始日期、会员到期日期),关系为一对多,因为每年每个会员都有一个新的会员条目

当我这样做时:

SELECT * FROM members
INNER JOIN membership ON members.member_id = membership.member_id
我为每个成员获取多个记录。如何将每个成员的记录分组为一个记录,其中包含成员资格开始日期的最小值和成员资格到期日期的最大值?
谢谢。

您可以从
成员的派生表中进行聚合。例如:

SELECT m.*, ms.start_date, ms.exp_date
FROM members m
JOIN (SELECT member_id, MIN(start_date) AS start_date, MAX(exp_date) AS exp_date
      FROM membership
      GROUP BY member_id) ms ON ms.member_id = m.member_id

我将使用聚合:

SELECT m.*, min(ms.start_date), max(ms.expiration_date)
FROM members m
     membership ms
     ON m.member_id = ms.member_id
GROUP BY m.member_id;

您的代码中有一些错误没有ms joinmissing@Lorecn1 . . . 什么错误?除了“开始日期”上的一个输入错误外,它看起来是正确的。@Lorecn1别担心,我很高兴能帮上忙。