我有一行代码应该有日期输出,但它在我的SQL报告中说明:
子查询返回超过1行
这是我的代码:
try
{
String contract = "UPDATE vsl375 SET "
+ "contract = (SELECT disdate FROM embarkationdetails "
+ "WHERE vsl375.crewid = embarkationdetails.CrewId)";
pst = conn.prepareStatement(contract);
pst.execute();
}
catch (SQLException e) {JOptionPane.showMessageDialog(null, e);}
我希望我的输出是这样的:
ID_Number
---------
1
2
3
DATE
----
01/25/2016
01/25/2016
01/26/2016
答案 0 :(得分:0)
UPDATE
中的子查询不会以这种方式工作 - 它应该只返回一个值,然后将该单个值写入每个目标行(在您的情况下,所有行) 。对每个目标行进行 not 评估。
根据您使用的数据库类型,您可以使用UPDATE ... FROM
(请注意,这不是标准的SQL语法)或MERGE
来执行您需要的操作。
MERGE INTO vsl375 tgt
USING embarkationdetails src
ON (tgt.crewid = src.CrewId)
WHEN MATCHED THEN UPDATE SET contract = src.disdate;