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

MYSQL OG forespørgsel for at opfylde i samme kolonne

Fordi stop_id kan ikke være to forskellige værdier i samme række.

Aggregation er én måde at gøre det, du vil:

SELECT b.bus_name
FROM buses b JOIN
     route_connect rc
     ON rc.busid = b.id JOIN
     stops s
     ON s.id = rc.stop_id
GROUP BY b.bus_name
HAVING SUM( s.stop_name = 'Sydney' ) > 0 AND
       SUM( s.stop_name = 'Melbourne' ) > 0;

Dette returnerer busser, der har stoppesteder med navnet på begge byer.

Da busser kan have mange stop, kan det være mere effektivt at gøre:

SELECT b.bus_name
FROM buses b JOIN
     route_connect rc
     ON rc.busid = b.id JOIN
     stops s
     ON s.id = rc.stop_id
WHERE s.stop_name in ('Sydney', 'Melbourne')
GROUP BY b.bus_name
HAVING COUNT(DISTINCT s.stop_name) = 2;


  1. Håndtering af langsomme forespørgsler med PostgreSQL

  2. MySQL ATAN() Funktion – Returner buetangensen for en værdi (eller værdier)

  3. Sådan opretter du en bruger med PSQL

  4. Fejl:Kolonnen findes ikke