【问题标题】:Change multiple rows PostgeSQL更改多行 PostgreSQL
【发布时间】:2022-01-21 22:50:34
【问题描述】:

我喜欢更改 PostgreSQL 数据库中的多行。我有一个 Excel 文件,我喜欢用它来查询(或者可能有另一种更快的方法)。

例如:

我有 column1 401,402,403 是包装材料的代码,它们有不同的价格。

code   price
401    0,31
402    0,32
403    0,33 

这些价​​格发生了变化,所以我在 excel 中有 2 列有变化,一列是代码,一列是新价格。该表包含 619 行,其中 153 行将发生变化。为了加快速度,我喜欢一次性改变它们。

已经找到解决方案,使用 case 命令(见下文),但这对我来说行不通。

Update "Table"
set price= (case
when code=  '401'   then    '0.33'
when code=  '402'   then    '0.34'
when code=  '403'   then    '0.35'end)
where code in('401','402','403')

当我使用这种方式时,我无法在查询中使用''(用于价格)。当我忽略它们时,价格列变成 0

【问题讨论】:

  • UPDATECASE 应该可以工作,如果您修复语法问题(缺少 )( 太多)。演示问题edit问题并提供minimal reproducible example,即涉及的表或其他对象的CREATE语句(粘贴文本,不要使用图像,不要链接到外部站点),INSERT 用于示例数据 (dito) 的语句以及表格文本格式的示例数据的期望结果。
  • 只是想知道,但问题可能出在小数点分隔符上?在您的示例数据中使用逗号,在查询中使用点。 ¿ 数据如何存储在 Excel 中?也许是格式问题,这可以解释为什么删除 '' 价格变成 0(可能是整数字段?)
  • 认为我的转换方式是错误的。更改查询以更新 fust set fustprijs = case when FUSTCOD= '401' then 0.33 when FUSTCOD= '402' then 0.33 when FUSTCOD= '403' then 0.35 end where fustcod in('401','402','403' ) 它现在可以工作了,只是用 3 条规则测试了它,即我手动输入的 where 子句。想知道是否可以自动从 Excel 中获取正确的查询,有什么建议吗? Excel 包含 2 列,一列用于代码 (A),一列用于价格 (B)

标签: sql excel database postgresql


【解决方案1】:

您可以通过为每一行创建单独的更新语句来轻松完成此操作。假设您在 C 列和 D 列中有“代码”和“价格”信息,在 E 列中输入以下公式:

= "Update Table Price=" &D4& " WHERE code=" & C4 & ";"

然后复制仅包含“值”选项的 E 列并在 postgre 中运行语句

结果应该如下

Update Table Price=0,31 WHERE code=401;
Update Table Price=0,32 WHERE code=402;
Update Table Price=0,33 WHERE code=403;

【讨论】:

  • excel 部分有效,但我无法在 Postgre 中“运行”该语句。我只能使用 SQL。
  • 答案中缺少“Set”,Update Table Set Price=0,31 WHERE code=401;
  • 我试过了,1 个命令有效。当我添加第二行时,它不起作用。我将它们分开 bij a ;标记。但我认为这就是他卡住的地方。
  • 将逗号“,”替换为句点“.”作为十进制分隔符,它应该可以工作 Update Table Price=0.31 WHERE code=401;更新表价格=0.32 WHERE code=402;更新表 Price=0.33 WHERE code=403;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
  • 2021-10-10
  • 2021-07-20
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
相关资源
最近更新 更多