Bonjour,
J'ai une grosse problématique que je n'arrive pas à résoudre depuis 2 jours.
Je ne sais pas si mon libellé est clair mais j'explique :
j'ai une table "evt" avec différentes colonnes dont evt_id (pour la clé primaire) et date_creation.
Le champ date_creation n'a pas été créé à la création de la table.
De ce fait, j'ai mis à jour ce champ en fonction d'autres champs date contenu dans ma table.
Sur 1 millions de lignes, il me reste aujourd'hui 24 000 date_creation qui sont nulles et que je ne peux pas déterminer.
J'aimerais finalement mettre à jour ces date_creation vides par le biais des autres enregistrements de ma table par rapport l'id supérieur le plus proche.
Voici ma requête sélect :
Cette requête me renvoi l'id à mettre à jour, la date_creation, et l'id supérieur le plus proche de mon id de départ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT evt_id, (SELECT date_creation FROM evt AS tmp1 WHERE tmp1.evt_id > evt.evt_id AND tmp1.date_creation IS NOT NULL ORDER BY tmp1.evt_id LIMIT 1) date_creation, (SELECT evt_id FROM evt AS tmp2 WHERE tmp2.evt_id > evt.evt_id AND tmp2.date_creation IS NOT NULL ORDER BY tmp2.evt_id LIMIT 1) info FROM evt WHERE date_creation IS NULL LIMIT 0,10;
Elle fonctionne bien avec ma limite de 10 enregistrements, mais si je n'en met aucune, ça mouline et je ne récupère aucun résultat.
Déjà, je n'ai pas pu écrire de requête UPDATE à partir de mon SELECT, je n'ai trouvé aucune solution.
J'avais décidé d'exporter les résultats de mon SELECT dans un fichier CSV et ensuite de construire, à la main (oui je sais...) mes requêtes d'UPDATE.
Mais je me retrouve une nouvelle fois bloquée par cette limitation.
Pour info, j'ai rajouté des index sur date_creation, puis sur evt_id et date_creation.
J'ai également tenté en ligne de commande.
Tout ça n'a rien donné.
Si vous avez des solutions à me proposer, je suis toute ouïe.
Merci d'avance et bon week end !
Partager