J'ai une table appelée Employé
Eno ename AttributeValue AttributeName
1 aa a123 abc
2 bbb b123 dcf
3 cc c7sd wew3
Je veux permuter les données de la colonne AttributeValue
à AttributeName
et AttributeName
à AttributeValue
Par exemple:
Eno ename AttributeValue AttributeName
1 aa abc a123
2 bbb dcf b123
3 cc wew3 c7sd
UPDATE employee
SET AttributeValue = AttributeName,
AttributeName = AttributeValue
Toutefois, sauf si les deux colonnes ont exactement la même définition, vous risquez de perdre des informations.
Update employee
Set attributeValue = attributeName,
attributeName = attributeValue
update Employee set AttributeValue = AttributeName, AttributeName = AttributeValue
C'est vraiment un bon exemple
SELECT * from employees;
Go
DECLARE @temp as varchar(20)
update employees
set @temp = fname,
fname = lname,
lname = @temp
WHERE deptno = 10;
GO
SELECT * from employees;
Declare @myTable Table (id int, first_name varchar(50), last_name varchar(50));
Select * from Student
Insert Into @myTable (id, first_name, last_name) Select id, last_name, first_name from Student
MERGE
INTO Student std
USING @myTable tmp
ON std.id = tmp.id
WHEN MATCHED THEN
UPDATE
SET std.first_name = tmp.first_name,
std.last_name = tmp.last_name;
Select * from Student
Sortie
Toutes les techniques précédentes sont lentes car les grandes tables déplacent la date au lieu de renommer les colonnes, voici une solution simple:
ALTER TABLE "amplitude"
RENAME COLUMN "start_hour_displayed" TO "temp";
ALTER TABLE "amplitude"
RENAME COLUMN "start_hour" TO "start_hour_displayed";
ALTER TABLE "amplitude"
RENAME COLUMN "temp" TO "start_hour";
Si vous avez des vues de fonctions liées, vous devez les sauvegarder et les restaurer ensuite.
Il suffit d'échanger les deux colonnes en une seule mise à jour:
Update registration
Set AttributeName = AttributeValue ,
AttributeValue = AttributeName where id in (1,2,3)
UPDATE employee SET AttributeValue = AttributeName, AttributeName = AttributeValue: il n'est pas correct de créer une colonne temporaire et d'essayer le code UPDATE employee SET temp = NomName Puis à nouveau UPDATE employee SET AttributeName = AttributeValuee À nouveau.
UPDATE employee SET AttributeValuee = temp