【问题标题】:"Column_name" in WHERE clause is ambiguousWHERE 子句中的“Column_name”不明确
【发布时间】: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.PACIdP.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


【解决方案1】:

您应该对不明确的列进行预混叠,
sql不知道,你要ME.PACId还是P.PACId

只是改变 ) IS NULL OR PACId = (SELECT => ) IS NULL OR ME.PACId = (SELECT

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2019-10-09
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多