sql >> Base de Datos >  >> RDS >> Mysql

¿Otra forma de mejorar la consulta SQL para evitar la unión?

Independientemente de lo que elija, tenga en cuenta que el código corto no siempre es el código óptimo. En muchos casos, donde tiene una lógica lo suficientemente divergente, la unión de los resultados es realmente la opción más óptima (y, a veces, la más limpia programáticamente).

Dicho esto, el siguiente OR en la cláusula WHERE parece cubrir ambos casos...

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