【问题标题】:Column `D1` in field list is ambigious字段列表中的“D1”列不明确
【发布时间】:2014-10-16 16:05:38
【问题描述】:

想知道你能不能帮我解决这个问题。

通常,如果您想使用连接运行 INSERT,您会使用我在这里编写的脚本...

    INSERT INTO products_BU  (`d1`)
      SELECT `D1`
      FROM new_dimensions_BU
      LEFT JOIN new_dimensions_BU AS ud 
      ON products_BU.size_code = ud.SIZE_CODE

这是一个难题,在 products_BU 中没有完全是 D1 的字段,此外,即使有,我也可以简单地为该列使用别名。如果我使用别名 ud.D1,我会遇到另一个问题,即在“on 子句”中显示未知列“products_BU.size_code”,即使我可以看到它正是 size_code。

如果我删除别名,我会再次得到 Ambiguous 列,因此删除别名也不起作用。

谁能解释为什么会发生这样的错误?

【问题讨论】:

  • products_BU中没有正好是D1的字段,怎么会这样?,你用的是INSERT INTO products_BU(d1),所以d1必须 存在于该表中
  • 是的,但它们肯定是不同的,因为D1 中的大写字母?即使它们相同并且我使用了别名,它仍然会失败。
  • 你有这个连接谓词 - products_BU.size_code = ud.SIZE_CODE - 但 products_BU 没有出现在选择列表中,这就是你得到未知列错误的原因。我怀疑你想要new_dimensions_BU.size_code = ud.SIZE_CODE
  • 抱歉,我没有按照您对实际问题的解释。您很可能只是混淆了整个问题,您需要了解如何使用表别名。

标签: mysql sql syntax


【解决方案1】:

当您有这样的查询时:

insert into table2
(field1, field2, etc)
select query goes here

选择查询必须能够自行成功执行。

看这段代码:

FROM new_dimensions_BU
LEFT JOIN new_dimensions_BU AS ud 
ON products_BU.size_code = ud.SIZE_CODE

您正在尝试引用 products 表而不加入它。

【讨论】:

    猜你喜欢
    • 2020-09-01
    • 2020-07-30
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多