Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Eine andere Möglichkeit, die SQL-Abfrage zu verbessern, um Union zu vermeiden?

Was auch immer Sie wählen, seien Sie sich bewusst, dass der Kurzcode nicht immer der optimale Code ist. In vielen Fällen, in denen Sie eine ausreichend divergierende Logik haben, ist das Zusammenführen der Ergebnisse wirklich die optimalste (und manchmal sauberste, programmatisch) Option.

Das folgende OR in der WHERE-Klausel scheint jedoch beide Fälle abzudecken ...

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