Existe-t-il un moyen de mettre à jour plusieurs lignes avec des valeurs différentes pour chaque ligne à l'aide d'une seule requête SQL? Je dois mettre à jour une colonne en plusieurs lignes avec des données différentes. L'utilisation de requêtes de mise à jour individuelles pour chaque ligne semble excessive, donc si c'est possible, j'aimerais consolider ce processus en une seule instruction SQL ou au moins réduire le nombre de requêtes requises. J'utilise PHP avec le framework Zend et MySql.MySQL UNION for UPDATE
Répondre
Créer une table temporaire et le remplir avec:
CREATE TEMPORARY TABLE temptable (id INTEGER, VALUE VARCHAR(200))
INSERT
INTO temptable
VALUES
('1', 'val1'),
('2', 'val2'),
('3', 'val3'),
('4', 'val4')
Alors question:
UPDATE
mytable m, temptable t
SET m.value = t.value
WHERE m.id = t.id
Je sais que cela fonctionne pour SQL Server, il est donc la peine d'essayer de MySQL.
Vous pouvez construire l'instruction case en fonction de vos différentes lignes.
Ne sais pas MySQL spécifiquement, mais pour mettre à jour plusieurs lignes à partir d'un SELECT, ou une union de plusieurs SELECTs, je ferais
UPDATE U
SET MyColumn = T.OtherColumn
FROM MyUpdateTable AS U
JOIN
(
SELECT [OtherColumn] = OtherColumn1
FROM MyOtherTable1
WHERE ...
UNION
SELECT OtherColumn2
FROM MyOtherTable2
WHERE ...
) AS T
ON T.ID = U.ID
Mise à jour 28/10/2014, converti à travailler pour MySQL:
UPDATE MyUpdateTable AS U
JOIN
(
SELECT [OtherColumn] = OtherColumn1
FROM MyOtherTable1
WHERE ...
UNION
SELECT OtherColumn2
FROM MyOtherTable2
WHERE ...
) AS T
ON T.ID = U.ID
SET MyColumn = T.OtherColumn
Désolé, comme je l'ai dit je ne connais pas la syntaxe MySQL. Cela fonctionnerait sur MS SQL Server. Peut-être existe-t-il une syntaxe différente dans MySQL qui permet une table UPDATE avec un JOIN? – Kristen
- 1. mysql union question
- 2. Union requête dans mysql
- 3. mysql update mathématiques
- 4. Union comme sous-requête MySQL
- 5. MySQL (DEFAULT + ON UPDATE) TimeStamps
- 6. Création d'une vue MySQL en utilisant UNION
- 7. MySQL: Utilisation des indices UNION subselects
- 8. Problème de sous-requête MySQL Update
- 9. MySQL - Requête UPDATE basée sur SELECT Query
- 10. mysql SELECT imbriquée UPDATE de même table
- 11. MySQL - Different instruction UPDATE autre INSERT
- 12. MySQL: UPDATE avec SUM et JOIN
- 13. Unite deux requêtes MySQL avec UNION ou par programme
- 14. La combinaison UNION et opérations LIMIT MySQL requête
- 15. MySQL Union Query w/Left Join - Classement par Erreur?
- 16. MySQL: Union d'une jointure gauche avec un droit d'inscription
- 17. MySql Union n'est pas exécuté dans une vue
- 18. Aidez-moi avec cette jointure externe complète MySql (ou union)
- 19. MySQL UPDATE et SELECT en un seul passage
- 20. Mysql Erreur d'entrée en double sur ON DUPLICATE KEY UPDATE
- 21. MySQL INSERT/UPDATE sans la clé ON DUPLICATE
- 22. Group Union
- 23. Union d'intervalles
- 24. SQL Server 'FOR XML PATH' dans PHP/MySQL
- 25. Pourquoi un seul enregistrement après union?
- 26. ActiveRecord for Erlang
- 27. Union deux Liste
- 28. espace blanc UNION bug
- 29. Union annulée dans OBIEE
- 30. Requête SQL sans UNION
Cela fonctionne dans MySql mais, quand vous ne changez pas la colonne a sur chaque entrée, les autres seront définis vides. – user63371