Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सबसे हाल के संदेशों के लिए SQL क्वेरी

चूंकि जॉन वू ने स्पष्ट किया कि यह दिशात्मक नहीं है, यह मेरा नया उत्तर है:

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
);

आउटपुट:

| 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 |

इस इनपुट के लिए:

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 डेमो

यदि ANSI SQL आपकी चाय का प्याला है, तो इसे करने का तरीका यह है: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. SQL/MySQL में, ज्वाइन स्टेटमेंट में ON और WHERE में क्या अंतर है?

  2. केवल उस डेटा का चयन करने की आवश्यकता है जिसमें MySQL में बैकस्लैश हों

  3. Node.js MySQL - त्रुटि:ECONNREFUSED कनेक्ट करें

  4. MySQL में विशेष रूप से INT डेटा टाइप में NULL कैसे डालें?

  5. सरल INSERT के साथ MySQL सिंटैक्स त्रुटि?