Dans mon projet, je me sers d'une table MySQL pour stocker réelle information pour tous les id (champs inutiles sont omis):Choisir requête MySQL correcte
CREATE TABLE mytable (
`id` varchar(8) NOT NULL,
`DateTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM
Je dois mettre à jour les lignes dans ce tableau et insérer de nouvelles DateTime
seulement si ce DateTime
entrant est plus récent. Mais en même temps je ne sais pas si la ligne avec tel id
existe déjà dans la table. Voici le pseudo-code de ce que je voudrais obtenir:
if id does not exist
insert id and DateTime
else if newDateTime > DateTime
update DateTime
- J'ai essayé d'utiliser le remplacer, mais pour autant que je sache, il est impossible de comparer les champs de l'intérieur remplacer le corps.
- J'ai essayé d'utiliser la mise à jour, mais si la ligne n'existe pas, les nouvelles informations ne sont pas insérées.
Est-il possible de faire quelque chose comme ça dans une requête? Et si non - quelle pourrait être la solution de contournement? PS: Je ne pense pas que j'ai la permission d'ajouter des procédures stockées, donc cela devrait être un dernier recours.
fyi, il est recommandé de ne pas utiliser les mots réservés pour les noms de champs. sinon, vous devrez toujours échapper le 'DateTime' en backticks. J'utilise souvent un champ 'stamp', ou vous pouvez essayer 'date_time'. – zanlok
@zanlok Mon projet utilise une base de données déjà existante, je ne peux pas changer les noms de champs. – Zhukikov
N'existe-t-il aucune programmation autre que SQL? Qu'est-ce que l'envoi de cette requête? – johnny