2016-08-18 111 views
1

我有一個MySQL查詢中,我需要運行一個子查詢進一步運行一個子查詢是這樣的:如何在MySQL中最內部的子查詢中使用外部表列?

SELECT id, 
    (SELECT COUNT(*) AS total FROM 
     (SELECT * FROM t3 WHERE t3.abcId = t1.id) t2 
    WHERE /*conditions*/) as total 
FROM t1 WHERE /* condtions */; 

現在這個查詢拋出錯誤unknown column t1.id.請誰能告訴如何在最內層使用t1 table列子查詢where子句。我也試圖通過@variables通過T1列值如下:

SELECT id, @var := t1.id, 
    (SELECT COUNT(*) AS total FROM 
     (SELECT * FROM t3 WHERE t3.abcId = @var) t2 
    WHERE /*conditions*/) as total 
FROM t1 WHERE /* conditions */; 

但在這種情況下@var沒有得到每一行即總正在恢復,因爲它得到第一排相同的值更新。請爲此提出任何工作解決方案。

注意: - 我無法更新查詢流程,因爲它計算的東西非常複雜。上面提到的查詢只是原始查詢流程的一個例子。

+0

不能使用外柱在子選擇 – Jens

+0

我已經知道,在得到錯誤後。我正在問任何備用解決方案,因爲我必須這樣做。 – Ritesh

回答

1

不能做到這一點,SQL引擎不允許使用外部查詢,如果它超過1級別。我可以建議的替代,避免子選擇之一:

SELECT t1.id , 
     (SELECT COUNT(*) FROM t3 
     WHERE t3.abcID = t1.id 
      AND /*conditions */) as total 
FROM t1 
WHERE /*conditions */ 
0

最內層的查詢可以 選擇COLUMN_NAMES從T3,T1其中t3.abcid == t1.id

+0

它不會解決我的目的..會破壞計算 – Ritesh

相關問題