Mysql
 sql >> Base de données >  >> RDS >> Mysql

Intersection MySQL basée sur un seul champ

Vous pouvez utiliser un simple JOIN pour ce travail :

SELECT 
  m1.* 
FROM
  mytable m1 
  INNER JOIN mytable2 m2 
    ON m1.history = m2.history 

renvoie :

id  emails      phones          history insert_date
237 PLEASE SET  [email protected]  gomez   2015-01-11

La requête dans votre question ressemblerait à ceci :

SELECT 
  m1.* 
FROM
  mytable m1 
  INNER JOIN mytable2 m2 
    ON m1.history = m2.history 
WHERE `insert_date` >= DATE_SUB(CURDATE(), INTERVAL 3 DAY)

Et il ne renvoie correctement rien car le seul enregistrement qualifiant a une date antérieure à 3 jours.

Voici une infographie incroyablement utile reliant les opérations d'ensemble aux fonctions SQL

http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig .jpg