Gui*_*oza 6 postgresql sql-update
在我的PostgreSQL数据库中,我有一个包含两个文本值的表,t1并且t2:
| id | t1 | t2 |
| 1 | abcd | xyz |
| 2 | aazz | rst |
| 3 | fgh | qwerty |
Run Code Online (Sandbox Code Playgroud)
我想以一种方式交换列的值t1和t2表中的每一行,使用上面的例子,这将是结果:
| id | t1 | t2 |
| 1 | xyz | abcd |
| 2 | rst | aazz |
| 3 | qwerty | fgh |
Run Code Online (Sandbox Code Playgroud)
另外,让我们假设 id=4 之后的所有行(4、5、6...)的值都已经正确,是否可以过滤我想要交换的行?
我试过这个(用于 MySQL 数据库),但没有一个解决方案有效。
a_h*_*ame 10
这是一个简单的更新:
update the_table
set t1 = t2,
t2 = t1
where id < 4;
Run Code Online (Sandbox Code Playgroud)
与 MySQL 不同,Postgres 正确地做到了这一点。
Mik*_*nek 10
select * from swapit;
id | t1 | t2
----+-------+--------
1 | abcd | xyz
2 | aazz | rst
3 | fgh | qwerty
4 | first | second
5 | first | second
(5 rows)
update swapit set t1 = t2, t2 = t1 where id <= 3;
UPDATE 3
select * from swapit order by id;
id | t1 | t2
----+--------+--------
1 | xyz | abcd
2 | rst | aazz
3 | qwerty | fgh
4 | first | second
5 | first | second
(5 rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1954 次 |
| 最近记录: |