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

MySQL:Pilih N baris, tetapi hanya dengan nilai unik dalam satu kolom

Mungkin bukan solusi yang paling elegan, dan kinerja IN mungkin menderita di meja yang lebih besar.

Kueri bersarang mendapatkan Birthyear minimum untuk setiap kota. Hanya catatan yang memiliki Birthyear . ini dicocokkan dalam kueri luar. Memesan berdasarkan usia kemudian membatasi hingga 3 hasil memberi Anda 3 orang tertua yang juga tertua di kota mereka (Egon Spengler keluar..)

SELECT Name, City, Birthyear, COUNT(*) AS ct
FROM table
WHERE Birthyear IN (SELECT MIN(Birthyear)
               FROM table
               GROUP by City)
GROUP BY City
ORDER BY Birthyear DESC LIMIT 3;

+-----------------+-------------+------+----+
| name            | city        | year | ct |
+-----------------+-------------+------+----+
| Henry Jones     | Chicago     | 1899 | 1  |
| Mac Taylor      | New York    | 1955 | 1  |
| Sarah Connor    | Los Angeles | 1959 | 1  |
+-----------------+-------------+------+----+

Sunting - menambahkan GROUP BY City ke kueri luar, karena orang dengan tahun kelahiran yang sama akan mengembalikan banyak nilai. Pengelompokan pada kueri luar memastikan bahwa hanya satu hasil yang akan dikembalikan per kota, jika lebih dari satu orang memiliki Birthyear minimum tersebut . ct kolom akan menunjukkan jika ada lebih dari satu orang di kota dengan Birthyear



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuka blokir dengan host flush mysqladmin

  2. Tips untuk Memberikan Kinerja Database MySQL - Bagian Satu

  3. Jquery datepicker dengan Ajax tidak berfungsi

  4. SQL bagaimana membandingkan dua kolom dari dua tabel yang berbeda

  5. Menyimpan Nomor Kartu Kredit di SESI - cara mengatasinya?