Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Schnittmenge basierend auf einem einzelnen Feld

Sie können einen einfachen JOIN verwenden für diese Stelle:

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

gibt zurück:

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

Die Abfrage in Ihrer Frage würde folgendermaßen aussehen:

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

Und es wird korrekterweise nichts zurückgegeben, da der einzige qualifizierende Datensatz ein Datum hat, das älter als 3 Tage ist.

Hier ist eine unglaublich nützliche Infografik, die Set-Operationen mit SQL-Funktionen in Beziehung setzt

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