---
title: "Byta värde mellan två poster"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/96576-byta-värde-mellan-två-poster"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Addeladde"
published: "2004-02-04T17:44:54.000Z"
updated: "2004-02-05T16:22:03.000Z"
replies: 7
views: 268
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/96576-byta-värde-mellan-två-poster"
---

# Byta värde mellan två poster

## #1 — Addeladde, 2004-02-04T17:44Z

Hej

Jag har ID1 och ID2 
Nu vill jag byta värde i kolumnen sortering mellan dessa poster. Hur gör jag enklast en sql update för detta?

Exempel på tabell innan uppdate:

```
ID  Sortering
1      8
2      4
```

Efter update

```
ID  Sortering
1      4
2      8
```

Permalänk: https://www.webforum.nu/p/96576

## #2 — LarsG, 2004-02-04T19:10Z

```
update t as q 
set  sortering = (select sortering 
from t where id = case when q.id = 1 then 2 else 1 end)
where id in (1,2)
```

Permalänk: https://www.webforum.nu/p/1269107

## #3 — Addeladde, 2004-02-04T20:00Z

Kan man förenkla det ytterligare så att man endast skickar ett ID och sedan byter ID med den post som ligger ovanför när man sorterar efter kolumnen sortering?

Permalänk: https://www.webforum.nu/p/1269143

## #4 — LarsG, 2004-02-04T20:07Z

> med den post som ligger ovanför

Du menar den post med högsta id som är mindre än ID. 

Använd inte begrepp som ovanför eller under, det är inte relevant. 

Det går väl att lösa. Vilken DBMS gäller det?

Permalänk: https://www.webforum.nu/p/1269149

## #5 — Addeladde, 2004-02-04T20:52Z

Exempel:

```
id   sortering  Namn
1       8            A
2       6            B
3       9            C
4       1            D
```

Detta skrivs ut om man sorterar efter kolumnen sortering.

D
B
A
C

Väljer jag exempelvis att flytta A så skickar jag ID 1 till funktionen och då ska tabellen se ut på det här sättet nedan. Alltså att ID 1 och ID 2 byter värde med varandra i kolumnen sortering.

```
id   sortering  Namn
1       6            A
2       8            B
3       9            C
4       1            D
```

Kan nämnas att ID är en räknare med unikt värde.
Det gäller för en access databas men ska uppgraderas till en MS-SQL

Permalänk: https://www.webforum.nu/p/1269168

## #6 — Addeladde, 2004-02-04T21:45Z

Får inte äns till första frågan.

```
Update meny as m set m.meny_sortering = (select meny_sortering 
from meny where meny_id = case when m.meny_id = 57 then 56 
else 57 end) where meny_id in (57,56)
```

Tabellen meny ser ut enligt följande:
meny_id, meny_sortering

Permalänk: https://www.webforum.nu/p/1269197

## #7 — Addeladde, 2004-02-05T15:55Z

Man kanske ska hämta det andra värdet i en sql-sträng och sedan köra två olika uppdate satser?

Permalänk: https://www.webforum.nu/p/1269686

## #8 — LarsG, 2004-02-05T16:22Z

Jo, det låter ju enklast om du vill få till en lösning som fungerar i både Access och SQL server.

Access har inte stöd för case utan där får man använda iif. Har också för mig att den inte gillar att man använder subselect i set.

Permalänk: https://www.webforum.nu/p/1269700

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/96576-byta-värde-mellan-två-poster
