Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Outra forma de melhorar a consulta SQL para evitar união?


Seja qual for a sua escolha, esteja ciente de que o código curto nem sempre é o código ideal. Em muitos casos, onde você tem lógica suficientemente divergente, unir os resultados é realmente a opção mais ideal (e às vezes mais limpa, programaticamente).

Dito isto, o seguinte OR na cláusula WHERE parece cobrir os dois 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")