Sql 在单个查询中组合max和columns
我有两张桌子:Sql 在单个查询中组合max和columns,sql,sqlite,Sql,Sqlite,我有两张桌子: 客户->内部ID,字符串名称 采购->日期,整数值,整数C\U ID 在客户表中,我有: 1, A 2, B 在“购买”表中: 01-01-2019, 10, 1 02-01-2019, 20, 2 03-01-2019, 30, 2 我想做一个查询,返回每个客户的最新购买信息。所以我想得到: 1, 01-01-2019 2, 03-01-2019 我尝试了不同的选择,但没有成功: select max(purchase.date), customer.id from c
1, A
2, B
在“购买”表中:
01-01-2019, 10, 1
02-01-2019, 20, 2
03-01-2019, 30, 2
我想做一个查询,返回每个客户的最新购买信息。所以我想得到:
1, 01-01-2019
2, 03-01-2019
我尝试了不同的选择,但没有成功:
select max(purchase.date), customer.id
from customer, purchase
where purchase.c_id = customer.id
但结果只是:
2, 03-01-2019
所以我不能得到每行的最大值
可能吗?你能帮我吗?基本上,你的查询只需要一个
GROUPBY
子句。没有它,所有记录都聚合到一个唯一的行中,其中包含最长日期和随机选择的客户id
如果只需要客户id和日期,则无需涉及客户表:
select c_id, max(date) from purchase group by c_id
如果您需要来自客户表的信息(如客户名称),则:
注:
- 始终使用首选的显式标准联接而不是老式的隐式联接
- 使用表别名可以使查询更短、更易于阅读
GROUPBY
子句。没有它,所有记录都聚合到一个唯一的行中,其中包含最长日期和随机选择的客户id
如果只需要客户id和日期,则无需涉及客户表:
select c_id, max(date) from purchase group by c_id
如果您需要来自客户表的信息(如客户名称),则:
注:
- 始终使用首选的显式标准联接而不是老式的隐式联接
- 使用表别名可以使查询更短、更易于阅读
@马西莫萨瓦齐。作为OP,你可以接受任何你喜欢的答案。但你不接受这个答案有什么原因吗?@MassimoSavazzi。作为OP,你可以接受任何你喜欢的答案。但你不接受这个答案有什么原因吗?
select p.*
from purchases p
where p.date = (select max(p2.date) from purchases p2 where p2.c_id = p.c_id);