我一直在研究这个问题,我似乎无法找到解决方案。
在以下查询中,我需要子查询在外部查询中引用 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
答案 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'