Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Jarak minimum dan grup menurut

Di sini adalah artikel bagus dalam dokumentasi resmi MySQL:

kutipan:

Baris yang Memegang Maksimum Group-wise dari Kolom Tertentu

Tugas:Untuk setiap artikel, temukan dealer atau dealer dengan harga paling mahal.

Masalah ini dapat diselesaikan dengan subquery seperti ini:

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

Contoh sebelumnya menggunakan subkueri berkorelasi, yang bisa jadi tidak efisien (lihat Bagian 13.2.10.7, “Subkueri Berkorelasi”). Kemungkinan lain untuk memecahkan masalah adalah dengan menggunakan subquery yang tidak berkorelasi dalam klausa FROM atau LEFT JOIN.

Subkueri yang tidak berkorelasi:

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;

KIRI GABUNG:

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 bekerja atas dasar bahwa ketika s1.price berada pada nilai maksimumnya, tidak ada s2.price dengan nilai yang lebih besar dan nilai baris s2 akan menjadi 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. memperbarui kolom dengan nomor urut mysql

  2. Pencarian array Php/MySql dengan , , é, , , ü, í,

  3. mysqli_koneksi ke server jauh

  4. Menghitung jumlah kata yang cocok

  5. MySQL REGEXP Tanpa Spasi Tanpa Angka