簡體   English   中英

在連接/子選擇中引用上一個表

[英]Referencing previous table in join / subselect

我通常在編寫甚至復雜的查詢時也很聰明,但是有時我會被諸如此類的簡單事情卡住:

SELECT * FROM
orders o
JOIN (
    SELECT i.order_id, COUNT(*) AS order_item_count
    FROM order_item i WHERE i.order_id = o.order_id
) x
ON x.order_id = o.order_id

#1054 - Unknown column 'o.order_id' in 'where clause'

如何在子選擇內引用order_id?

不想做的事:

SELECT * FROM
orders o
JOIN order_item i WHERE i.order_id = o.order_id
ON i.order_id = o.order_id
GROUP BY o.order_id

我有多個表要加入,並且我希望order_id不放在GROUP BY中。

抱歉,我的問題是如何從mySQL的子查詢中指定父查詢字段的重復項

因此,其解決方案是將subselect放入字段區域,而不是加入子數據集:

SELECT
   *,
   (SELECT COUNT(i.order_id)
    FROM order_item i
    WHERE i.order_id = o.order_id) AS order_item_count
FROM orders o

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM