【发布时间】:2020-07-12 10:59:41
【问题描述】:
我正在阅读 Miguel Grinberg 的这篇 article,在“加入”部分,我对结果有点困惑。
总结一下我关心的部分,他加入了属于同一表的查询和子查询,条件是它的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 在哪里?
我想确认一下我的理解是否正确,如果 JOIN 具有相同的 NAME 和 VALUE,它也会组合两个 COLUMNS。
【问题讨论】:
-
编辑您的问题并显示查询。
-
您只能从
orders表中获取列,因为主查询使用Order.query,它仅返回该表中的所有列。 -
我曾经再次运行查询,但这次我使用
db.session.query(Order, last_orders)对其进行了重组,并且我能够获得另一个customer_id。正如@GordThompson 所强调的,原始查询仅用于返回Order表中的列。谢谢!
标签: sql orm sqlalchemy flask-sqlalchemy