我在读米格尔·格林伯格的这篇文章,关于“加入”部分,我对结果有点困惑。
总结一下我所关心的部分,他将属于同一个表的一个查询和一个子查询连接起来,条件是 customer_id
是一样的
所选查询: id, customer_id, order_date
所选子查询: customer_id, max(order_date) AS last_order_date
当他加入时,我期待着:
id | customer_id | order_data | customer_id | last_order_date
--------------------------------------------------------------
但他的结果是:
id | customer_id | order_data | last_order_date
-----------------------------------------------
另一个在哪里 customer_id
从子查询中选择?
因此,我想确认我的理解是否正确,如果一个连接具有相同的名称和值,那么它也会合并两列。
1条答案
按热度按时间gzszwxb41#
文章使用
select *
什么时候应该使用select orders.*, last_orders.last_order_date
已经让我对文章中的其他内容产生了怀疑。大多数数据库都会运行查询并返回两列
customer_id
--就像你建议的那样。但是,在访问应用程序中的这两个列时会出现问题。他们有相同的名字。因此,这些列可能会以某种方式被省略。尽管如此,这是一个相当糟糕的示例,因为使用窗口函数编写查询要好得多: