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 恰好是一行。
您好,我正在尝试 运行 查询以在同一列中查找两个值,比较它们并将最高值设置为两者,但我有点困惑。
我不知道如何完美地做到这一点,所以我采用了一种丑陋的方法,但仍然迷路了。
我有一个 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 恰好是一行。