字段中的列''不明确

时间:2013-03-17 22:49:06

标签: java mysql jdbc sql-update

我在java中使用MySQL。

我正在尝试更新其中一个表'regApartmentsTable','gardApartmentsTable','penthousesTable'中的'所有者'字段,该表为空,并且对应于特定的apartmentNum和street,并将其替换为字符串' newOwners'。

为了做到这一点,我写了下面的代码:

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个表中搜索。

1 个答案:

答案 0 :(得分:1)

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

这里的每个表都需要单独的UPDATE,因为连接不是您打算进行更新的。或者制作一个基表。

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);