子查询引用父查询中的字段

时间:2014-01-14 16:07:07

标签: mysql

我一直在研究这个问题,我似乎无法找到解决方案。

在以下查询中,我需要子查询在外部查询中引用 MachineIdent 。字段MachineIdent不明确(仅存在于表CoilPass中)。

我认为目前子查询返回所有的MachineIdent结果,我只需要它返回一个(当前正在检索的记录)

返回的错误是“子查询返回多行”

我是否正确地认为SELECT语句有点像循环,一次检索一行信息?

SELECT MachineIdent,
ROUND(EntryGauge * (SELECT DisplayScaleFactor FROM webreportparametersetup AS w WHERE w.MachineIdent = CoilPass.MachineIdent AND w.ItemName = 'EntryGauge')) AS EntryGauge
FROM Coil INNER JOIN CoilPass ON Coil.CoilIdent=CoilPass.CoilIdent INNER JOIN PassSection ON CoilPass.PassIdent=PassSection.PassIdent

1 个答案:

答案 0 :(得分:0)

不,SQL不能像这样工作。您可以缩小子查询以仅返回一个结果,但您确实只想将新标准包含在现有查询中,如下所示:

SELECT 
    MachineIdent,
    EntryGauge, 
    w.DisplayScaleFactor, 
    ROUND(EntryGauge * w.DisplayFactor) AS ScaledEntryGauge
FROM Coil INNER JOIN CoilPass ON Coil.CoilIdent=CoilPass.CoilIdent 
INNER JOIN PassSection ON CoilPass.PassIdent=PassSection.PassIdent 
INNER JOIN webreportparametersetup w ON w.MachineIdent = CoilPass.MachineIdent 
WHERE w.ItemName = 'EntryGauge'