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

nhóm theo các giá trị not-null

Tôi nghĩ những điều sau đây sẽ làm những gì bạn muốn:

SELECT *, (To_days(date_expires)-TO_DAYS(NOW())) as dayDiff, COUNT(id) AS change_count
FROM mytable
GROUP BY (case when source_id is null then id else source_id end)
HAVING dayDiff < 4 
ORDER BY (case when source_id is null then 1 else 0 end), date_created DESC

Nó thực hiện một nhóm group by vì vậy các nguồn NULL sẽ không được nhóm lại. Sau đó, nó đặt chúng cuối cùng bằng cách sử dụng logic theo thứ tự order by .

Tôi không hiểu ý của bạn về lần xuất hiện cuối cùng. Bây giờ tôi nghĩ tôi làm:

SELECT coalesce(s.id, mytable.id) as id,
       max(case when s.maxid is not null and s.maxid = myable.id then mytable.name
                when s.maxid is null then NULL
                else mytable.name
           end) as name,
       (To_days(date_expires)-TO_DAYS(NOW())) as dayDiff, COUNT(id) AS change_count
FROM mytable left outer join
     (select source_id, MAX(id) as maxid
      from mytable
      where source_id is not null
      group by source_id
     ) s
     on mytable.id = s.maxid
GROUP BY (case when source_id is null then id else source_id end)
HAVING dayDiff < 4 
ORDER BY (case when source_id is null then 1 else 0 end), date_created DESC

Điều này kết hợp với thông tin từ bản ghi mới nhất (dựa trên id cao nhất).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khắc phục Lỗi thực thi các sự kiện bảng thay đổi DDL làm rơi khóa ngoại FKg0mkvgsqn8584qoql6a2rxheq qua Tuyên bố JDBC

  2. Python3 + MySql:Lỗi khi tải mô-đun MySQLdb:Không có mô-đun nào có tên 'MySQLdb'

  3. Phương thức Illuminate \ Support \ Collection ::save không tồn tại trong Laravel

  4. Tôi có nên sử dụng PDO PARAM_LOB hoặc PARAM_STR cho loại MySQL TEXT không?

  5. Bỏ qua các mục nhập trùng lặp và cam kết các mục nhập thành công trên DbContext.SaveChanges () trong EF Core