2012-12-12 4 views
1

S'il vous plaît quelqu'un peut m'aider, j'ai une table des utilisateurs et une autre table avec les utilisateurs et l'heure (c'est un fichier journal et plusieurs dates existent par utilisateur). J'ai besoin de prendre la date la plus récente de la table de journal et l'insérer dans la première table à côté du même utilisateur.INSCRIRE DANS SELECT O WH col = col

C'est ce que j'ai, mais sa ne fonctionne pas:

INSERT INTO tb1 n (DT) 
SELECT w.DT 
FROM tb2 w 
WHERE w.User = n.User 
ORDER BY w.DT DESC 
limit 1 
+0

« * l'insérer dans la première table * » ne fait aucun sens. De même, "* à côté du même utilisateur *" –

+0

voulez-vous vraiment INSÉRER dans la table des utilisateurs? ou la mise à jour serait bien? parce que je pense que vous ne voulez pas avoir des utilisateurs en double dans votre première table (utilisateurs). je veux juste mettre à jour la colonne max_date de cette table. droite? –

Répondre

3

vous n'avez pas besoin d'utiliser INSERT déclaration ici car il y a déjà des dossiers présents sur votre table. Mais au lieu UPDATE avec JOIN

UPDATE tb1 a 
     INNER JOIN 
     (
      SELECT user, MAX(DT) maxDT 
      FROM tb2 
      GROUP by user 
     ) b ON a.user = b.user 
SET  a.DT = b.maxDT