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

mysql - tham gia các bản ghi đầu tiên và cuối cùng theo loại nhóm?

Sử dụng chức năng "sôi nổi" của mysql của GROUP BY không có tổng hợp các cột khác, chỉ trả về giá trị đầu tiên hàng của nhóm. Sau đó, vấn đề trở thành việc đưa các hàng vào đúng thứ tự trước đó sử dụng chức năng này, thường bằng cách sử dụng truy vấn bí danh.

Cách tiếp cận này tránh bất kỳ truy vấn con nào có liên quan (truy vấn trên mỗi hàng) và chỉ cần hai lần lướt qua bảng (một lần cho mỗi hướng sắp xếp):

select x2.type, x2.dat as first_dat, y2.dat as last_dat
from (select *
  from (select type, dat
    from so8735514
    order by 1, 2) x1
  group by 1) x2
join (select *
  from (select type, dat
    from so8735514
    order by 1, 2 desc) y1
  group by 1) y2 on y2.type = x2.type;

Mã kiểm tra:

create table so8735514 (idx int, type text, dat text);
insert into so8735514 values
(0, 'a', 'foo1'),
(1, 'b', 'foo2'),
(2, 'c', 'foo3'),
(3, 'a', 'foo4'),
(4, 'b', 'foo5'),
(5, 'c', 'foo6'),
(6, 'a', 'foo7'),
(7, 'b', 'foo8'),
(8, 'c', 'foo9');

Đầu ra:

+------+-----------+----------+
| type | first_dat | last_dat |
+------+-----------+----------+
| a    | foo1      | foo7     |
| b    | foo2      | foo8     |
| c    | foo3      | foo9     |
+------+-----------+----------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để GROUP BY trong MySQL đúng cách?

  2. Làm cách nào để đo thời gian mysql, thời gian và / hoặc tải của một truy vấn sql trong php?

  3. Php - MySQL chọn dữ liệu từ bảng, sau đó cập nhật cùng một bảng

  4. Mysql - Thủ tục lưu trữ biến OUT trả về null

  5. Truy vấn lồng nhau SQL chậm khi sử dụng IN