Mysql
 sql >> Database >  >> RDS >> Mysql

Intersezione MySQL basata su un singolo campo

Puoi utilizzare un semplice ISCRIVITI per questo lavoro:

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

resi:

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

La query nella tua domanda sarebbe simile a questa:

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

E non restituisce nulla correttamente perché l'unico record idoneo ha una data precedente a 3 giorni.

Ecco un'infografica incredibilmente utile che mette in relazione le operazioni sugli insiemi con le funzioni SQL

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