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

pilih hanya jika nilainya berbeda

Jika Anda ingin mengecualikan baris yang cocok dengan name sebelumnya , ada beberapa cara seperti berikut ini.

Kasus 1:Jika Anda menggunakan MySQL8, Anda dapat menggunakan LAG fungsi.

SELECT t1.id,t1.name,t1.price FROM (
  SELECT t2.id,t2.name,t2.price,
    LAG(t2.name) OVER(ORDER BY t2.id) prev
  FROM mytable t2
) t1
WHERE t1.prev IS NULL OR t1.name<>t1.prev
ORDER BY 1

Kasus 2:Jika id s terus menerus tanpa langkah apa pun, Anda akan mendapatkan hasil yang diharapkan dengan membandingkan name dan id sebelumnya oleh GABUNG.

SELECT t1.id,t1.name,t1.price FROM mytable t1
  LEFT JOIN mytable t2
  ON t1.name=t2.name AND
     t1.id=t2.id-1
WHERE t1.id=1 OR t2.id IS NOT NULL
ORDER BY 1

Kasus 3:Jika id s tidak kontinu, ada cara untuk mendapatkan id yang maksimal yang tidak melebihi id lainnya .

SELECT t1.id,t1.name,t1.price FROM mytable t1
  LEFT JOIN mytable t2
  ON t1.name=t2.name AND
     t1.id=(SELECT MAX(t3.id) FROM mytable t3 WHERE t3.id<t2.id)
WHERE t1.id=1 OR t2.id IS NOT NULL
ORDER BY 1

DB Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri Pencarian Hibernasi

  2. Django ManyToMany melalui beberapa database

  3. Tabel InnoDB ada di MySQL tetapi mengatakan mereka tidak ada setelah menyalin database ke server baru

  4. Memuat file CSV ke MySQL Workbench

  5. hitung sebagian besar pengguna yang pernah online dengan MySQL