【问题标题】:Column ' ' in field is ambiguous字段中的列“”不明确
【发布时间】:2013-03-17 22:49:05
【问题描述】:

我正在使用 java 中的 MySQL。

我正在尝试更新表“regApartmentsTable”、“gardApartmentsTable”、“penthousesTable”之一中的“所有者”字段,该表为空,对应于特定的公寓编号和街道,并将其替换为字符串“新业主。

为此,我编写了以下代码:

st=connection.prepareStatement("UPDATE regApartmentsTable,gardApartmentsTable,penthousesTable SET owners=? " +
                "WHERE owners=? AND apartmentNum=? AND street=?");
st.setString(1, newOwners);
st.setString(2, "");
st.setInt(3, apartmentNum);
st.setString(4, streetName+" "+buildingNum);

我包括 3 个表格,因为我需要查看所有表格。 (所需的公寓,没有所有者,并且与公寓编号和街道相匹配,如果对任何人有帮助,则不能在多张桌子上)。

但是,当我尝试运行此代码时,我收到“字段中的列‘所有者’不明确”错误。 任何想法我应该如何编写 SQL 命令? 提前谢谢!

编辑: 我没有得到足够的答案来解决我的问题...好吧,我知道异常会引发,因为“所有者”字段在这三个表中很常见。 然而,我该如何解决这个问题?我无法在表格名称中添加前缀,因为我不知道要在哪个表格中找到所需的公寓...如果我知道,我就不会在 3 个表格中进行搜索。

【问题讨论】:

  • 您知道您只能通过连接更新UPDATE 上的一个表吗?
  • 我不确定我是否完全理解您所说的,但我根本不打算更新多个表。
  • 该错误意味着您在多个表中有owners 列。您需要在owners 前面指定适当的表名,例如regApartmentsTable.owners。或者,您可以使用别名来保存输入,例如regApartmentsTable AS a,然后只需:a.owners 就足够了。

标签: java mysql jdbc sql-update


【解决方案1】:

MySQL中的多表UPDATE只是表连接的一种形式,使用regApartmentsTable.owners之类的。

您需要为此处的每个表单独更新,因为连接不是您想要更新的内容。或者制作一个基表。

str = connection.prepareStatement("UPDATE regApartmentsTable SET owners=? " +
                "WHERE owners=? AND apartmentNum=? AND street=?");
str.setString(1, newOwners);
str.setString(2, "");
str.setInt(3, apartmentNum);
str.setString(4, streetName+" "+buildingNum);

str = connection.prepareStatement("UPDATE gardApartmentsTable SET owners=? " +
                "WHERE owners=? AND apartmentNum=? AND street=?");
stg.setString(1, newOwners);
stg.setString(2, "");
stg.setInt(3, apartmentNum);
stg.setString(4, streetName+" "+buildingNum);

stp = connection.prepareStatement("UPDATE penthousesTable SET owners=? " +
                "WHERE owners=? AND apartmentNum=? AND street=?");
stp.setString(1, newOwners);
stp.setString(2, "");
stp.setInt(3, apartmentNum);
stp.setString(4, streetName+" "+buildingNum);

【讨论】:

  • 好的,但我不知道公寓将在哪一张桌子上满足要求......这并没有解决我的问题......
  • 好吧,因为我觉得没有其他in-place解决方案(不改变数据库),我添加了可行的解决方案。
猜你喜欢
  • 2020-09-01
  • 2020-07-30
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多