J'essaie de corriger certaines données en ajoutant un nouveau champ.MySQL Comment joindre et sélectionner des enregistrements visibles d'une table?
J'ai une sauvegarde depuis quelques mois et j'ai restauré cette base de données sur mon serveur.
Je regarde la table appelée pads, sa clé primaire est PadID et le champ d'importance s'appelle RemoveMeDate. Dans ma base de données restaurée (plus ancienne), il y a moins d'enregistrements avec une date réelle définie dans RemoveMeDate. Ma date de contrôle est 2001-01-01 00:00:00 ce qui signifie que l'enregistrement n'est pas caché ou visible. Ce que je dois faire est de sélectionner tous les enregistrements de l'ancienne base de données/table avec la date de contrôle et joindre avec ceux de la plus récente db/table où la date de contrôle n'est pas définie.
J'espère avoir expliqué cela correctement.
Je vais essayer à nouveau, avec des chiffres. J'ai 80 000 enregistrements visibles dans l'ancienne table (avec le jeu de date de contrôle) et 30 000 dans le plus récent db/table. Je dois sélectionner les 50 000 de l'ancienne base de données, pour effectuer une requête de mise à jour.
Voici ma requête, que je ne pourrais pas utiliser comme je le souhaite. jules-fix-raisons est l'ancienne base de données, jules est la plus récente.
select p.padid
from `jules-fix-reasons`.`pads` p
JOIN `jules`.`pads` ON p.padid = `jules`.`pads`.`PadID`
where p.RemoveMeDate <> '2001-01-01 00:00:00' AND
`jules`.`pads`.RemoveMeDate = '2001-01-01 00:00:00'
EDIT - Peut-être que je peux fournir un exemple, au lieu de 10 000 enregistrements, je vais montrer 1 exemple.
p.pads (old table)
PadID=1 RemoveMeDate=2010-12-01 09:00:00
PadID=2 RemoveMeDate=2001-01-01 00:00:00
PadID=3 RemoveMeDate=2001-01-01 00:00:00
PadID=4 RemoveMeDate=2001-01-01 00:00:00
PadID=5 RemoveMeDate=2001-01-01 00:00:00
PadID=6 RemoveMeDate=2001-01-01 00:00:00
PadID=7 RemoveMeDate=2001-01-01 00:00:00
PadID=8 RemoveMeDate=2001-01-01 00:00:00
PadID=9 RemoveMeDate=2001-01-01 00:00:00
PadID=10 RemoveMeDate=2009-01-05 00:10:00
Donc theres 8 (aks = 80,000 dans la table réelle) enregistrements visibles.
Jules.pads
PadID=1 RemoveMeDate=2010-12-01 09:00:00
PadID=2 RemoveMeDate=2010-12-01 08:00:00
PadID=3 RemoveMeDate=2010-12-01 07:00:00
PadID=4 RemoveMeDate=2010-12-01 06:00:00
PadID=5 RemoveMeDate=2001-01-01 00:00:00
PadID=6 RemoveMeDate=2001-01-01 00:00:00
PadID=7 RemoveMeDate=2001-01-01 00:00:00
PadID=8 RemoveMeDate=2001-01-01 00:00:00
PadID=9 RemoveMeDate=2001-01-01 00:00:00
PadID=10 RemoveMeDate=2009-01-05 00:10:00
Donc, 5 enregistrements (aks = 50 000 dans la table réelle) sont visibles.
Ainsi, la requête SQL Je veux reviendriez enregistrements 2,3,4 de la table P
Modifier ajreal - requête de travail (FYI)
SELECT old_table.padid
FROM `jules-fix-reasons`.`pads` AS old_table
JOIN `jules`.`pads` AS new_table ON old_table.padid = new_table.`PadID`
WHERE new_table.RemoveMeDate <> '2001-01-01 00:00:00'
AND old_table.RemoveMeDate = '2001-01-01 00:00:00'
Qu'est-ce que vous obtenez lorsque vous exécutez cela? –
Je n'obtiens aucun résultat. – Jules
J'ai ajouté quelques exemples de données – Jules