Postgres 9.2 查找、比较和替换列中的两个值

Postgres 9.2 find, compare and replace two values in column

您好,我正在尝试 运行 查询以在同一列中查找两个值,比较它们并将最高值设置为两者,但我有点困惑。

我不知道如何完美地做到这一点,所以我采用了一种丑陋的方法,但仍然迷路了。

我有一个 table 数据有点像这样

Fruitname   Fruitvalue
Apples        11
Pears         10
Oranges       2

我希望能够查询 table 并获取 Apples 和 Pears 的值。然后我想根据最高价值替换苹果或梨的价值

像这样

Fruitname   Fruitvalue
Apples        11
Pears         11
Oranges       2

下面的代码让我得到最高值

SELECT MAX (fruitvalue) 
FROM fruit 
WHERE fruitname IN ('apple','pear')

但我可以想出如何将结果变成一个变量并将其分配给 fruitname。

例如

$variable = SELECT MAX (fruitvalue) FROM fruit WHERE fruitname IN ('apple','pear')

UPDATE fruittable SET fruitvalue = '$variable' WHERE fruitname = 'apple';
UPDATE fruittable SET fruitvalue = '$variable' WHERE fruitname = 'pears';

不需要变量,直接在update语句中使用select取最大值即可。

update fruittable 
   set fruitvalue = (SELECT MAX (fruitvalue) 
                     FROM fruit 
                     WHERE fruitname IN ('apple','pear'));
where fruitname in ('apple', 'pear');

之所以有效,是因为 select returns 恰好是一行。