2016-04-26 93 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

我已经尝试过你的一个,但同样的错误。 –