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

Truy vấn SQL cho các thư gần đây nhất

Vì John Woo đã làm rõ rằng đó không phải là định hướng, đây là câu trả lời mới của tôi:

select *
from msgsList
where (least(msg_from, msg_to), greatest(msg_from, msg_to), msg_time)       
in 
(
    select 
       least(msg_from, msg_to) as x, greatest(msg_from, msg_to) as y, 
       max(msg_time) as msg_time
    from msgsList 
    group by x, y
);

Đầu ra:

| MSG_ID | MSG_FROM | MSG_TO |    MSG |                       MSG_TIME |
------------------------------------------------------------------------
|      1 |        1 |      2 |  hello | January, 23 2010 17:00:00-0800 |
|      5 |        1 |      3 | me too | January, 23 2012 00:15:00-0800 |
|      6 |        3 |      2 |  hello | January, 23 2012 01:12:12-0800 |

Đối với đầu vào này:

create table msgsList
(
  msg_id int,
  msg_from int, 
  msg_to int,
  msg varchar(10),
  msg_time datetime
);

insert into msgslist VALUES

(1, 1, 2, 'hello', '2010-01-23 17:00:00'),      -- shown
(2, 2, 1, 'world', '2010-01-23 16:00:00'),

(3, 3, 1, 'i am alive', '2011-01-23 00:00:00'),
(4, 3, 1, 'really', '2011-01-22 23:15:00'),
(5, 1, 3, 'me too', '2012-01-23 00:15:00'),     -- shown

(6, 3, 2, 'hello', '2012-01-23 01:12:12');      -- shown

SQLFiddle Demo

Nếu ANSI SQL là tách trà của bạn, thì đây là cách thực hiện: http://sqlfiddle .com / #! 2 / 0a575 / 19

select *
from msgsList z
where exists
(
    select null
    from msgsList
    where 
      least(z.msg_from, z.msg_to) = least(msg_from, msg_to)
      and greatest(z.msg_from, z.msg_to) = greatest(msg_from, msg_to)
    group by least(msg_from, msg_to), greatest(msg_from, msg_to)
    having max(msg_time) = z.msg_time  
) ;


  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ó thể tạo một cột với UNIX_TIMESTAMP mặc định trong MySQL không?

  2. Tự động cập nhật Sphinx có được lập chỉ mục khi bạn thêm dữ liệu vào SQL của mình không?

  3. Chuyển đổi javascript thành đối tượng ngày sang định dạng ngày mysql (YYYY-MM-DD)

  4. Đã có một DataReader mở được liên kết với Kết nối này phải được đóng trước + asp.net mvc

  5. bảng mysql bị khóa sau khi php gặp sự cố