【问题标题】:insert last id of column in another column table PostgreSQL在另一个列表PostgreSQL中插入列的最后一个ID
【发布时间】:2015-11-17 14:59:03
【问题描述】:

我正在尝试从表格中插入列代码,计算表格库存中列代码的最后一个 id,这是我的请求,它不起作用。

  String sql1="INSERT INTO calcul (idproduit,inventaire,consomation,date,quantite,designation,dateper,ppa,tr,net,code) "
           + "VALUES ('"+codeP+"',"+newQuant+","+0+",'"+datestock+"',"+newQuant+",'"+designation+"','"+datePer+"',"+PPA+","+TR+","+NET+",SELECT MAX(code) from stock );";
     
       stmt.executeUpdate(sql1);

【问题讨论】:

  • 任何错误,堆栈跟踪?请附上。
  • 请给出两个表的表定义。向stock 表添加值后是否尝试执行此操作?还是独立?如果您在向 stock 表添加值之后执行此操作,您是否为此和该语句使用相同的连接对象?请添加相关代码。
  • 你为什么要这样做?您要解决的根本问题是什么?如果code 值是通过序列生成的,请使用lastval() 函数。

标签: java sql postgresql-9.1


【解决方案1】:

您需要修改查询以包含子查询(替换值)。我不会在这里复制整个 stackoverflow 的答案,但是,我想给您参考一些已经得到答案的问题,请参阅 herehere

在你的,我会写如下查询:

"插入计算 (idproduit、inventaire、consomation、日期、数量、名称、dateper、ppa、tr、net、代码) 选择 '"+codeP+"',"+newQuant+","+0+",'"+datestock+"',"+newQuant+",'"+designation+"','"+datePer+"',"+PPA+"," +TR+","+NET+",MAX(代码) 现货;

你的查询有点乱,所以我想把它放在下面更通用的形式

INSERT INTO calcul (col1, col2, ....,coln) SELECT col1, col2, ..., MAX(code) FROM stock;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多