MySQL选择最年轻的用户子

时间:2017-08-15 12:06:19

标签: mysql sql

我遇到了以下问题。 我想选择每位顾客最年轻的孩子,并展示孩子的年龄。因此,输出必须如下所示:

abc@example.com 12
cde@example.com 15
efg@example.com 8

如果身份证号码超过1个孩子,则只能展示最小的孩子。

Table "customers"
ID
Email


Table "kids"
ID
AgeOfKid

任何帮助都将受到高度赞赏。

由于

2 个答案:

答案 0 :(得分:0)

这是您要查找的查询

 select c.Email,min(k.AgeOfKid) from customers c
 inner join kids k on k.ID=c.ID
 group by c.ID

答案 1 :(得分:0)

如果表之间没有连接,则应将外键customerId添加到kids表中。 如果孩子表中已经有customerId,您可以创建一个程序,让您返回所需的数据,而不是每次需要时手动编写查询。例如程序:

CREATE PROCEDURE getYoungestKid 
(
 findcustomerId INT
)
BEGIN
   SELECT c.email, MIN(k.AgeOfKId) AS 'youngest'
   FROM customers AS c JOIN kids AS k ON c.ID = k.customerId
   WHERE c.customerId = findcustomerId
   GROUP BY c.ID
END

要使用该程序,请执行以下操作:

CALL getYoungestKid (@customerId) 

@customerId将是您搜索最小孩子的客户的ID。

您可以为所有客户执行类似的过程,只需将findcustomerId作为参数删除,并在最后删除where子句。