Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL I zapytanie do spełnienia w tej samej kolumnie

Ponieważ stop_id nie może być dwóch różnych wartości w tym samym wierszu.

Agregacja to jeden ze sposobów na to, co chcesz:

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;

Spowoduje to zwrócenie autobusów, które mają przystanki z nazwami obu miast.

Biorąc pod uwagę, że autobusy mogą mieć wiele przystanków, bardziej efektywne może być wykonanie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyszukiwanie geograficzne MYSQL z wydajnością na odległość

  2. Jak znaleźć lokalizację MySQL my.cnf?

  3. ImportError:brak modułu o nazwie flask.ext.mysql

  4. Jak porównywać ciągi dla pojedynczej spacji

  5. Jak włączyć powolny dziennik zapytań w MySQL?