【发布时间】: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
【问题讨论】:
-
UPDATE和CASE应该可以工作,如果您修复语法问题(缺少)或(太多)。演示问题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