Mirki, mam tabele z kolumna "sorting" i chcialbym zamienic poszczegolne rekordy miejscami. Jak takie cos osiagnac jednym zapytaniem? #sql #postgresql #bazydanych #webdev
@Jastrzi: nie chce sortowac. Teoretycznie moglbym zrobic dwa updaty na transakcjach, ale nie chce wykonywac az tylu zapytan do bazy, dlatego szukam czegos co pozwoliloby na zamiane w jednym zapytaniu.
@danoxide: Jak nie wskażesz bazie za pomocą ORDER BY jaka kolejność cię interesuje to z punktu widzenia bazy jest to dla Ciebie nieistotne i otrzymasz rekordy w takiej kolejności jak będzie wygodnie bazie - czyli bez ORDER By kolejność będzie niedeterministyczna. Na początku, gdy w tabeli będziesz miał raptem kilka rekordów to może będzie Ci zwracała w kolejności w jakiej rekordy były dodawane, ale to tylko na początku
@maniac777: No tak, źle widocznie opisałem. Powiedzmy, że mam tabelę "test", która prezentuje się w ten sposób: id | sort | name ---+------+------- 2 | 3 | apple 3 | 2 | plum 1 | 1 | orange
Po zamianie wartości w kolumnie sort i posortowaniu powinno zwrócić taką tabelę id | sort | name ---+------+------- 1 | 3 | orange 3 | 2 | plum 2 | 1 |
@danoxide: Jak nie wskażesz bazie za pomocą ORDER BY jaka kolejność cię interesuje to z punktu widzenia bazy jest to dla Ciebie nieistotne i otrzymasz rekordy w takiej kolejności jak będzie wygodnie bazie - czyli bez ORDER By kolejność będzie niedeterministyczna. Na początku, gdy w tabeli będziesz miał raptem kilka rekordów to może będzie Ci zwracała w kolejności w jakiej rekordy były dodawane, ale to tylko na początku
id | sort | name
---+------+-------
2 | 3 | apple
3 | 2 | plum
1 | 1 | orange
Po zamianie wartości w kolumnie sort i posortowaniu powinno zwrócić taką tabelę
id | sort | name
---+------+-------
1 | 3 | orange
3 | 2 | plum
2 | 1 |
@danoxide: Innej metody na przypisanie dwóch różnych wartości dwóm różnym rekordom nie widzę.