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

Chọn bản sao và giữ bản cũ nhất (không dựa trên ID)

Dựa trên dữ liệu mẫu và kết quả của bạn, một GROUP BY sẽ cung cấp cho bạn kết quả mà bạn đang theo đuổi:

SELECT
  domain,
  MIN(creationdate) AS creationdate,
  value1,
  value2
FROM mytable
GROUP BY domain, value1, value2

Phụ lục :@Arka đã cung cấp dữ liệu mẫu cập nhật trong đó value 1value 2 các cột có các giá trị khác nhau (trong bản gốc, chúng giống nhau). Điều đó thay đổi truy vấn thành này:

SELECT domain, creationdate, value1, value2
FROM mytable
WHERE (domain, creationdate) IN (
  SELECT domain, MIN(creationdate)
  FROM mytable
  GROUP BY domain)

Truy vấn con nhận được danh sách creationdate sớm nhất cho mỗi domain và truy vấn bên ngoài chỉ chọn các hàng có tên miền domaincreationdate khớp với các giá trị truy vấn con.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails `where` với thời gian ít hơn các truy vấn

  2. Chuyển đổi truy vấn MySQL - cần các hàng thành cột

  3. Sử dụng khóa chính không sử dụng

  4. Sao lưu cơ sở dữ liệu hàng ngày bằng Cron Job

  5. Cập nhật bảng MySQL và bỏ qua các mục trùng lặp