子查询返回超过1行

时间:2016-01-25 07:14:30

标签: java sql netbeans

我有一行代码应该有日期输出,但它在我的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

1 个答案:

答案 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;