Postgres 9.2在列中查找,比较和替换两个值

时间:2015-06-04 15:34:42

标签: sql sql-update postgresql-9.2

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

我无法弄清楚如何以漂亮的方式做到这一点,所以我采取了一种丑陋的方法,但仍然迷失了。

我有一个表格,数据有点像这样

Fruitname   Fruitvalue
Apples        11
Pears         10
Oranges       2

我希望能够查询表并获取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';

1 个答案:

答案 0 :(得分:0)

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

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

这是有效的,因为子选择只返回一行。