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

Minimalna odległość i grupuj według

Tutaj to doskonały artykuł w oficjalnej dokumentacji MySQL:

Cytat:

Wiersze utrzymujące maksimum grupy określonej kolumny

Zadanie:dla każdego artykułu znajdź sprzedawcę lub sprzedawców z najdroższą ceną.

Ten problem można rozwiązać za pomocą podzapytania takiego jak to:

SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

W poprzednim przykładzie użyto skorelowanego podzapytania, które może być nieefektywne (patrz Sekcja 13.2.10.7, „Skorelowane podzapytania”). Inne możliwości rozwiązania problemu to użycie nieskorelowanego podzapytania w klauzuli FROM lub LEFT JOIN.

Nieskorelowane podzapytanie:

SELECT s1.article, dealer, s1.price
FROM shop s1
JOIN (
  SELECT article, MAX(price) AS price
  FROM shop
  GROUP BY article) AS s2
  ON s1.article = s2.article AND s1.price = s2.price;

LEWY DOŁĄCZ:

SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
WHERE s2.article IS NULL;

LEFT JOIN działa na tej podstawie, że gdy s1.price osiąga maksymalną wartość, nie ma s2.price o większej wartości, a wartości wierszy s2 będą równe NULL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python Matplotlib oraz MySQL i Ginput

  2. mysql pobierz sumę php

  3. Uporządkować według daty (varchar)?

  4. Zmień tabelę, aby podać ograniczenie klucza obcego

  5. Konfiguracja XAMPP — MySQL nie działa