2016-04-26 78 views
3

無法趕在哪裏SQL查詢子問題

還有就是我的SQL代碼

SELECT Txn.TrnID, Txn.Date, Txn.Amount, 
(SELECT `MetaValue` FROM `meta` WHERE `Parent` = 'DB_Transaction' AND `MainID` = Txn.TrnID AND `MetaKey` = 'SalesID' AND `MetaValue` = '803') AS SubqueryResult 
FROM transaction as Txn 
WHERE SubqueryResult = '803' 
LIMIT 10 

我得到這個錯誤

未知列在「SubqueryResult'子查詢輸出where子句'

+0

這是無效的查詢。 –

+0

子查詢是否正確執行? –

+0

嘗試這樣:SELECT Txn.TrnID,Txn.Date,Txn.Amount, m.MetaValue FROM交易作爲事務處理 上m.Parent = 'DB_Transaction' \t \t和m.MainID內部聯接元爲m \t \t = Txn.TrnID \t \t和m.MetaKey = 'SalesID' \t \t和m.MetaValue = '803' LIMIT 10 –

回答

3

願你可以嘗試針博士。這是

SELECT Txn.TrnID, Txn.Date, Txn.Amount, m.MetaValue FROM transaction as Txn inner join meta as m on m.Parent = 'DB_Transaction' and m.MainID = Txn.TrnID AND m.MetaKey = 'SalesID' AND m.MetaValue = '803' LIMIT 10 
1

這是查詢中的錯誤。子句查詢結果在where子句中不能使用AS valueName。因爲該名稱將在執行整個查詢後分配。因此,在where子句中,它不會在您的情況下找到SubqueryResult列。

你可以做的是:(WHERE子句中使用原始列名)

SELECT Txn.TrnID, Txn.Date, Txn.Amount, 
(SELECT `MetaValue` FROM `meta` WHERE `Parent` = 'DB_Transaction' AND `MainID` = Txn.TrnID AND `MetaKey` = 'SalesID' AND `MetaValue` = '803') AS SubqueryResult 
FROM transaction as Txn 
WHERE MetaValue = '803' 
LIMIT 10 
+0

我已經嘗試過你的一個,但同樣的錯誤。 –