sql >> Databasteknik >  >> RDS >> Mysql

Mysql-korsning baserat på ett enda fält

Du kan använda en enkel GÅ MED för det här jobbet:

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

returnerar:

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

Frågan i din fråga skulle se ut så här:

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

Och det returnerar korrekt ingenting eftersom det enda kvalificerande rekordet har ett datum som är äldre än 3 dagar.

Här är en otroligt användbar infografik som relaterar setoperationer till SQL-funktioner

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



  1. Anpassad mysql sortering efter fältvärde

  2. ORA-00933:SQL-kommandot avslutades inte korrekt när två tabeller raderades samtidigt

  3. hur får jag månad från datum i mysql

  4. MySQL Hur infogar man en ny post eller uppdaterar ett fält beroende på om det finns?