gpt4 book ai didi

sql - 使用指定的 4 列更新表,但只有 2 列可用

转载 作者:行者123 更新时间:2023-11-29 13:02:34 25 4
gpt4 key购买 nike

我有一个名为 test 的表,它有 4 列:

id     INT
v_out INT
v_in INT
label CHARACTER

我正在尝试使用以下查询更新表格:

String sql = "
update
test
set
v_out = temp.outV
, v_in = temp.inV
, label = temp.label
from (
values(
(1,234,235,'abc')
,(2,234,5585,'def')
)
) as temp (e_id, outV, inV, label)
where
id = temp.e_id
";

当我执行它时,我得到了错误:

org.postgresql.util.PSQLException: 错误:

 table "temp" has 2 columns available but 4 columns specified

问题是什么,我该如何解决?

最佳答案

values 子句的值不得括在括号中:

values (
(1,234,235,'abc'), (2,234,5585,'def')
)

创建一个包含两列的单行。每列都是具有 4 个字段的匿名“记录”。

你想要的是:

from (
values
(1,234,235,'abc'),
(2,234,5585,'def')
) as temp (e_id, outV, inV, label)

显示差异的 SQLFiddle:http://sqlfiddle.com/#!15/d41d8/2763

此行为已记录在案,但很难找到:
http://www.postgresql.org/docs/current/static/rowtypes.html#AEN7362

这与 select (col1, col2) from some_tableselect col1, col2 from some_table 本质上是一样的。第一个返回一个具有两个字段的匿名复合类型的列。第二个返回表中的两列。

关于sql - 使用指定的 4 列更新表,但只有 2 列可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25059350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com