sql >> Databasteknik >  >> RDS >> Mysql

MYSQL JOIN på samma bord

När du filtrerar på en OUTER JOIN måste du filtrera i ON-satsen eller som en härledd tabell. När image.display_order = '1' är i WHERE kommer det alltid att vara en 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' ) 

eller

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. Använda JSONB i PostgreSQL:Hur man effektivt lagrar och indexerar JSON-data i PostgreSQL

  2. MySQL 8 Beräknar genomsnitt genom partitionering efter datum

  3. MySql-fel inträffar över natten - Senaste paket som skickades till servern var för 0 ms sedan

  4. oracle rman enkel säkerhetskopiering