我遇到了以下问题。 我想选择每位顾客最年轻的孩子,并展示孩子的年龄。因此,输出必须如下所示:
abc@example.com 12
cde@example.com 15
efg@example.com 8
如果身份证号码超过1个孩子,则只能展示最小的孩子。
Table "customers"
ID
Email
Table "kids"
ID
AgeOfKid
任何帮助都将受到高度赞赏。
由于
答案 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子句。