J'essaie de comprendre comment METTRE À JOUR plusieurs lignes avec des valeurs différentes et je ne comprends tout simplement pas. La solution est partout mais pour moi, cela me semble difficile à comprendre.
Par exemple, trois mises à jour en une requête:
UPDATE table_users
SET cod_user = '622057'
, date = '12082014'
WHERE user_rol = 'student'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '2913659'
, date = '12082014'
WHERE user_rol = 'assistant'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '6160230'
, date = '12082014'
WHERE user_rol = 'admin'
AND cod_office = '17389551';
J'ai lu un exemple, mais je ne comprends vraiment pas comment faire la requête. c'est à dire:
UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;
Je ne suis pas tout à fait clair comment faire la requête s'il y a plusieurs conditions dans la condition WHERE et dans la condition IF .. des idées?
mysql
sql
sql-update
franvergara66
la source
la source
Réponses:
Vous pouvez le faire de cette façon:
Je ne comprends pas votre format de date. Les dates doivent être stockées dans la base de données en utilisant des types de date et d'heure natifs.
la source
update
s n'affectent que les enregistrements qui existent déjà.cod_user
est une clé primaire et que les valeurs sont mélangées, alors plusieurs mises à jour sont probablement le meilleur itinéraire.MySQL offre un moyen plus lisible de combiner plusieurs mises à jour en une seule requête. Cela semble mieux correspondre au scénario que vous décrivez, est beaucoup plus facile à lire et évite ces conditions multiples difficiles à démêler.
Cela suppose que la
user_rol, cod_office
combinaison est une clé primaire. Si une seule de ces clés est la clé primaire , ajoutez l'autre champ à la liste UPDATE. Si aucune d'elles n'est une clé primaire (cela semble peu probable), cette approche créera toujours de nouveaux enregistrements - probablement pas ce que l'on souhaite.Cependant, cette approche rend les déclarations préparées plus faciles à construire et plus concises.
la source
cod_user=VALUES(cod_user), ...
, même à partir de la documentation officielle MySQL 5.6Vous pouvez utiliser une
CASE
instruction pour gérer plusieurs scénarios if / then:la source
la source
Pour prolonger la réponse @Trevedhek ,
Dans le cas où la mise à jour doit être effectuée avec des clés non uniques, 4 requêtes seront nécessaires
REMARQUE: ce n'est pas sécurisé pour les transactions
Cela peut être fait à l'aide d'une table temporaire.
Étape 1: Créez une table temporaire clés et les colonnes que vous souhaitez mettre à jour
Étape 2: Insérez les valeurs dans la table temporaire
Étape 3: mettre à jour la table d'origine
Étape 4: Supprimez la table temporaire
la source
Ici col4 et col1 sont dans le tableau 1. col2 et col3 sont dans le tableau2 J'essaye
de mettre à jour chaque col1 où col4 = col3 valeur différente pour chaque ligne
la source
Je l'ai fait de cette façon:
où PushSettings est
ça fonctionne bien
la source