我有两张table:
客户||
-|-|
Id|名称|order_id
订单|
-|-|
Id|Customer_id|日期|金额
我想得到每个客户的第一个订单,所以我在日期使用了inner join
和min
。不过,我也想要所有的订单列。
我的SQL查询是
SELECT
customers.id, customers.name,
MIN(orders.date)
FROM
customers
INNER JOIN
orders ON customers.id = orders.customer_id
GROUP BY
customers.id;
当我尝试从Orders表添加更多列时,如下所示:
SELECT
customers.id, customers.name,
MIN(orders.date), orders.id, orders.amount
FROM
customers
INNER JOIN
orders ON customers.id = orders.customer_id
GROUP BY
customers.id;
我收到一个错误
错误:列“orders.id”必须出现在GROUP BY子句中或在聚合函数中使用
4条答案
按热度按时间ylamdve61#
使用不带
group by
的distinct on。您可以查看this,以了解详细信息。gr8qqesn2#
我想这会对你有帮助的。在SQL Group by子句中,只能选择分组列和聚合列。对于您的情况,您必须添加额外的连接,以使用Customer_id和Minimun Order_Date从Order表中获取整个数据
bis0qfac3#
那就不要在主句中用min。
min(orders.date)
表示您希望获取一列的最小日期。您可以在加入前先过滤订单wr98u20j4#
您可以编写以下查询