sql >> Databasteknik >  >> RDS >> Mysql

MYSQL OCH fråga för att uppfylla i samma kolumn

Eftersom stop_id kan inte vara två olika värden på samma rad.

Aggregation är ett sätt att göra vad du vill:

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;

Detta returnerar bussar som har hållplatser med namnet på båda städerna.

Med tanke på att bussar kan ha många hållplatser kan det vara mer effektivt att göra:

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. SQL för att generera en lista med siffror från 1 till 100

  2. Hur visar man kategori och underkategori?

  3. MySQL InnoDB dött lås på SELECT med exklusivt lås (FÖR UPPDATERING)

  4. Analysera tabell- och kolumnnamn från SQL/HQL Java