J'ai 2 tables identiques dates et DATES_ARCHIVEDMYSQL insérer dans + select + CASE + SUPPR ne fonctionne pas
Je veux sélectionner dans le tableau DATES toutes les lignes qui ont des dates plus anciennes que la date actuelle -88 jours, puis insérez ces lignes dans DATES_ARCHIVED.
J'ai créé un CAS pour cela.
Ensuite, après l'insertion, je veux supprimer ces mêmes lignes de la table DATES d'origine.
Je suis certain que je suis arrivé que cela fonctionne avant, mais il ne fonctionne plus, il continue à donner erreur:
Code d'erreur: 1136. Nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1
tous les Les tables ont la même quantité de colonnes et j'ai également enlevé les 2 déclencheurs que j'avais sur les tables mais la même erreur se produit.
Je suis assez sûr que c'est à cause du cas où il se termine comme MostRecentDate, je pense que cela ajoute une nouvelle colonne.
Aussi, si je supprime tout le code ci-dessous la première: de dates, je reçois la même erreur
Voici le code:
INSERT INTO dates_archived
(term, course_no, date1_end, date2_end, date3_end, date4_end)
SELECT
term, course_no, date1_end, date2_end, date3_end, date4_end,
CASE WHEN date1_end > date2_end THEN date1_end
WHEN date2_end > date1_end THEN date2_end
WHEN date3_end > date1_end THEN date3_end
WHEN date4_end > date1_end THEN date4_end
WHEN date1_end > date3_end THEN date1_end
WHEN date2_end > date3_end THEN date2_end
WHEN date3_end > date2_end THEN date3_end
WHEN date4_end > date2_end THEN date4_end
WHEN date1_end > date4_end THEN date1_end
WHEN date2_end > date4_end THEN date2_end
WHEN date3_end > date4_end THEN date3_end
WHEN date4_end > date3_end THEN date4_end
ELSE 0
END AS MostRecentDate
FROM dates
HAVING (MostRecentDate <= (SELECT CURDATE() - INTERVAL 88 DAY));
FROM dates
WHERE (date1_end OR date2_end OR date3_end OR date4_end = MostRecentDate);
DELETE FROM dates
WHERE (date1_end OR date2_end OR date3_end OR date4_end = MostRecentDate);
Merci à l'avance, Chris
Vous sélectionnez 7 colonnes et les insérez dans 6 colonnes – Jens
Vous ne pouvez pas non plus utiliser un alias défini dans la clause select de la clause where. – fancyPants
Et comment votre instruction delete devrait-elle être au courant de MostRecentDate? – fancyPants