sql >> Databasteknik >  >> RDS >> Mysql

Ett annat sätt att förbättra SQL-frågan för att undvika förening?

Vad du än väljer, var medveten om att kortkod inte alltid är optimal kod. I många fall, där du har tillräckligt divergerande logik, är att förena resultaten verkligen det mest optimala (och ibland mest rena, programmässigt) alternativet.

Som sagt, följande OR i WHERE-satsen verkar täcka båda dina fall...

SELECT DISTINCT
  shops.*,
  DA.delivery_cost,
  DA.postcode AS AreaPostcode
FROM
  shops
INNER JOIN
  shops_delivery_area as DA
    ON (DA.shop_id = shops.id)
WHERE
  (DA.postcode = "Liverpool")
OR
  (DA.postcode = shops.postcode AND shops.location = "Liverpool")


  1. SQLite i Android:Främmande nycklar och <tabellbegränsning> förväntas

  2. Ansluter Genero till SQL Server

  3. Analysera SELECT-satsen för SQL-frågor till en PHP-array

  4. Gäller ORDER BY före eller efter DISTINCT?