sql >> Databáze >  >> RDS >> Mysql

MYSQL AND dotaz k uspokojení ve stejném sloupci

Protože stop_id nemohou být dvě různé hodnoty ve stejném řádku.

Agregace je jedním ze způsobů, jak dělat to, co chcete:

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;

Tím se vrátí autobusy, které mají zastávky s názvem obou měst.

Vzhledem k tomu, že autobusy mohou mít mnoho zastávek, mohlo by být efektivnější:

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. Prozkoumání GUI úložiště dotazů SQL Server 2016

  2. MySQL Použití řetězcového sloupce s textem data jako pole data

  3. nelze se připojit k databázi mysql v Ubuntu

  4. Mac nainstalujte a otevřete mysql pomocí terminálu