sql >> Databáze >  >> RDS >> Mysql

Průsečík Mysql založený na jednom poli

Můžete použít jednoduchý JOIN pro tuto práci:

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

vrátí:

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

Dotaz ve vaší otázce by vypadal takto:

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

A správně nevrací nic, protože jediný kvalifikující záznam má datum starší než 3 dny.

Zde je neuvěřitelně užitečná infografika týkající se množinových operací s funkcemi SQL

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



  1. Výkon MySQL:MyISAM vs InnoDB

  2. mysql:instr určete hranice slov

  3. Odlišný přístup k použití klauzule IN v MySql

  4. Proč nemohu vložit 10 číslic, když je můj sloupec INT(10)