Каков наилучший способ запросить таблицу и вставить все строки обратно в нее с переключением двух столбцов?

#sql #select

#sql #выберите

Вопрос:

У меня есть следующие столбцы и пример строки:

 ID COL1  COL2  COL3  COL4

1  dat1  dat2  dat3  dat4
  

Я хочу выполнить запрос, который оставит меня с этим:

 ID COL1  COL2  COL3  COL4

1  dat1  dat2  dat3  dat4

2  dat2  dat1  dat3  dat4
  

Я экспериментировал, но пока не смог добиться этого, моя последняя попытка:

 INSERT INTO TABLE1(COL1, COL2)
SELECT COL2, COL1 DAT3 DAT4 FROM TABLE1
  

Любые советы или подсказки очень ценятся.

Комментарии:

1. INSERT INTO TABLE1(COL1, COL2, COL3, COL4) SELECT COL2, COL1, 'dat3', 'dat4' FROM TABLE1

Ответ №1:

Я думаю, вам следует использовать весь столбец в insert, и вы можете получить значение для selecct

 INSERT INTO TABLE1 (COL1, COL2, COL3, COL4)
SELECT COL2, COL1, COL3, COL4  FROM TABLE1;
  

для добавления новых значений вы можете

 INSERT INTO TABLE1 (COL1, COL2, COL3, COL4)
SELECT COL2, COL1, 'new_value_for_col3', 'new_value_for_col4' FROM TABLE1;
  

Комментарии:

1. Большое вам спасибо, это выглядит именно так, как я ищу! Мне любопытно, как бы это работало, если бы я хотел это сделать, но также помещал новые данные в COL3 и COL4, я бы сделал это: COL1, COL2, ‘new3’, ‘new4’?

2. @deucalion0 да .. правильно, если вам нужно, чтобы один или несколько столбцов имели новое значение, вы должны установить соответствующую позицию с нужным вам значением..

3. Не могли бы вы обновить свой ответ, чтобы показать мне правильный синтаксис? Я не могу заставить это работать, я пробовал это: ВСТАВИТЬ В ТАБЛИЦУ1(COL1, COL2, COL3, COL4) ВЫБЕРИТЕ COL2, COL1 из TABLE1, ‘new3’, ‘new4’

4. Я обновил ответ .. (предположим, что col3 и col4 являются строковыми

5. Отлично, большое вам спасибо, это идеально и решило мою проблему.