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