【发布时间】:2018-10-06 00:30:26
【问题描述】:
我正在尝试使用子查询来检索每个客户的最早订单。我要选择email_address、order_id和order_date
表格:
客户(customer_id、email_address)
订单(order_id、order_date、customer_id)
我尝试过的:
我可以通过这样做获得order_id 或order_date
SELECT email_address,
(SELECT order_date /* or order_id */
FROM orders o
WHERE o.customer_id = c.customer_id
ORDER BY order_date LIMIT 1)
FROM customers c
GROUP BY email_address;
但如果我尝试在子查询中执行 SELECT order_id, order_date,则会收到错误消息:
操作数应包含 1 列
【问题讨论】:
-
在您的示例中执行子查询时,它必须返回一列,因为它成为结果中的一列。简单地将查询复制为另一列,然后更改它返回的列。
-
@SloanThrasher 那是我最初的爱好,但我内心的 DRY 程序员并不满足!
标签: mysql