Mysql
 sql >> Database >  >> RDS >> Mysql

Un altro modo per migliorare la query SQL per evitare l'unione?

Qualunque cosa tu scelga, tieni presente che il codice breve non è sempre un codice ottimale. In molti casi, in cui hai una logica sufficientemente divergente, l'unione dei risultati è davvero l'opzione più ottimale (e talvolta più pulita, programmaticamente).

Detto questo, il seguente OR nella clausola WHERE sembra coprire entrambi i casi...

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")