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

MYSQL JOIN na stejném stole

Když filtrujete na OUTER JOIN, musíte filtrovat v klauzuli ON nebo jako odvozené tabulce. Když image.display_order = '1' je ve WHERE, vždy to bude INNER JOIN

SELECT 
  topic.content_id, 
  topic.title, 
  image.location 
FROM 
  mps_contents AS topic 
  LEFT JOIN
  mps_contents AS image ON topic.content_id = image.page_id
             AND image.display_order = '1'  
WHERE 
  topic.page_id = (SELECT page_id FROM mps_pages WHERE page_short_name = 'foo' ) 

nebo

SELECT 
  topic.content_id, 
  topic.title, 
  image.location 
FROM 
  mps_contents AS topic 
  LEFT JOIN
  (
   SELECT *
   FROM mps_contents
   WHERE display_order = '1'
  ) AS image ON topic.content_id = image.page_id
WHERE 
  topic.page_id = (SELECT page_id FROM mps_pages WHERE page_short_name = 'foo' ) 



  1. []řetězec na jsonb s Gorm a postgres

  2. Vyberte posledních 5 řádků podle data

  3. Jaký je rozdíl PL/SQL API mezi Oracle Express Edition (XE) a Standard Edition (SE)?

  4. Poškození databáze pomocí MariaDB:Tabulka v enginu neexistuje