πŸ”€ΠšΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL: простая инструкция

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ROW_NUMBER(). Π’ΠΎΡ‚ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Π‘ использованиСм Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:


-- Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для сохранСния значСния ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки
DECLARE @temp varchar(max);
SET @temp = (SELECT column_name FROM table_name WHERE condition1 ORDER BY order_column LIMIT 1);

-- ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки
UPDATE table_name SET column_name = (SELECT column_name FROM table_name WHERE condition2 ORDER BY order_column LIMIT 1) WHERE condition1;

-- ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку с сохранСнным Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ
UPDATE table_name SET column_name = @temp WHERE condition2;
    

Π‘ использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ROW_NUMBER():


-- ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ значСния столбца column_name Π² соотвСтствии с порядком row_number
UPDATE table_name
SET column_name = (SELECT t2.column_name FROM (SELECT column_name, ROW_NUMBER() OVER (ORDER BY order_column) as rn FROM table_name) as t1 JOIN table_name as t2 ON t1.rn = (SELECT COUNT(*) FROM table_name) + 1 - t1.rn WHERE t2.condition ORDER BY t2.order_column)
WHERE condition;
    

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ table_name, column_name, condition1, condition2 ΠΈ order_column ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями для вашСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ столбцов.

НадСюсь, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL?

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SQL для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… позволяСт Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ порядка строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ запросы.

Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ смоТСм Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… порядок, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания простой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 'users' с двумя столбцами 'id' ΠΈ 'name':


    CREATE TABLE users (
        id INT PRIMARY KEY,
        name VARCHAR(50)
    );
    

Π¨Π°Π³ 2: Вставка Π΄Π°Π½Π½Ρ‹Ρ…

Π”Π°Π»Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 'users', Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ INSERT для вставки Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса:


    INSERT INTO users (id, name)
    VALUES (1, 'John'),
           (2, 'Jane'),
           (3, 'Alex'),
           (4, 'Emily');
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° 'users' с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами.

Π¨Π°Π³ 3: Запрос Π½Π° ΠΎΠ±ΠΌΠ΅Π½ мСстами строк

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами Π΄Π²Π΅ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ SQL-запрос:


    UPDATE users
    SET id = CASE
        WHEN id = 1 THEN 2
        WHEN id = 2 THEN 1
        ELSE id
    END
    WHERE id IN (1, 2);
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ мСняСм мСстами строки с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ '1' ΠΈ '2'. Запрос обновляСт столбСц 'id' Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 'users', ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ условиС CASE для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² строк.

Π¨Π°Π³ 4: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

ПослС выполнСния запроса ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ строки Π±Ρ‹Π»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ помСняны мСстами. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:


    SELECT * FROM users;
    

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ строки с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ '1' ΠΈ '2' помСнялись мСстами Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ запросы. ΠœΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ с создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ вставки Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ рассмотрСли SQL-запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ мСняСт порядок строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² позволяСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ строки Π±Ρ‹Π»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ помСняны мСстами.

SQL прСдоставляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности для манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, ΠΈ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти возмоТности для достиТСния Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ строки ΠΈ столбцы Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Excel мСстами?

SQL. Π’Ρ‹Π±ΠΎΡ€ всСх строк ΠΈ столбцов ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Google Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами столбцы ΠΈ строки. Ѐункция Transpose. Π£Ρ€ΠΎΠΊ 19.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”€ Как ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ строки мСстами Π² SQL: простой способ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅! πŸ”„

πŸ”€ΠšΠ°ΠΊ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки Π² SQL: простая инструкция

Как Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Microsoft SQL Server Π·Π° ΠΏΠ°Ρ€Ρƒ простых шагов

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚Ρ‹ ΠΊ Π±Π°Π·Π΅ SQL: простой способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ