Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chỉ chọn khi giá trị khác nhau

Nếu bạn muốn loại trừ các hàng khớp với name trước đó , có một số cách như sau.

Trường hợp 1:Nếu bạn sử dụng MySQL8, bạn có thể sử dụng LAG chức năng.

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

Trường hợp 2:Nếu id liên tục mà không có bất kỳ bước nào, bạn sẽ nhận được kết quả mong đợi bằng cách so sánh nameid trước đó bởi THAM GIA.

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

Trường hợp 3:Nếu id s không liên tục, có một cách để lấy id tối đa không vượt quá id khác .

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. Không thể tải com.mysql.jdbc.Driver

  2. Làm thế nào để kiểm tra cổng MySQL đang chạy và nó có thể được kết nối với?

  3. Làm cách nào để tách các loại ký tự (â? ²s) này bằng PHP?

  4. Đầu ra lệnh MySQL quá rộng trong máy khách dòng lệnh

  5. Cách kết nối với cơ sở dữ liệu bằng ứng dụng khách NaviCat MySQL