【发布时间】:2023-03-07 06:40:02
【问题描述】:
我有这个问题:
SELECT EquipmentNumber, EquipmentType, P.AreaCode AS Location, EquipDsc FROM MajorEquipment ME
INNER JOIN PlantAreaCodes P ON ME.PACId = P.PACId WHERE
(@EquipNumber IS NULL OR EquipmentNumber LIKE @EquipNumber)
AND ((SELECT PACId FROM PlantAreaCodes WHERE AreaCode = @Location) IS NULL OR PACId = (SELECT PACId FROM PlantAreaCodes WHERE AreaCode = @Location))
AND (@EquipType IS NULL OR EquipmentType LIKE @EquipType)
AND (@Comments IS NULL OR EquipDsc LIKE @Comments);
我收到错误“where 子句中的列 'PACId' 不明确。”
我之前尝试过此查询,使用其他数据,我没有遇到任何问题。怎么回事?
如果您需要更多信息,请告诉我。
【问题讨论】:
-
你应该对你的模棱两可的列进行预别名,
sql不知道,你想要什么ME.PACId或P.PACId。 -
虽然你从 PlantAreaCodes 中选择了 PACId,但你仍然需要明确说明你使用的是哪个表。
-
) IS NULL OR PACId = (SELECT=>) IS NULL OR ME.PACId = (SELECT -
将:
AND ((SELECT PACId FROM PlantAreaCodes WHERE AreaCode = @Location) IS NULL OR PACId = (SELECT PACId FROM PlantAreaCodes WHERE AreaCode = @Location))更改为:AND ((SELECT PACId FROM PlantAreaCodes WHERE AreaCode = @Location) IS NULL OR ME.PACId = (SELECT PACId FROM PlantAreaCodes WHERE AreaCode = @Location))
标签: mysql