【小(xiǎo)編推薦】SQL語句查詢最近(♥§↓γjìn)聯系人(rén)聊天記錄(即最近(jìn)一(yī)條消息)

2017-09-04   | &nbs"<λ​p; 發布者:梁國(guó)芳 &nbsε'↔p; |   查看(kàn):γφ3320次

php

SQL語句查詢最近(jìn)聯系人(rén)聊天記錄(即最近±÷(jìn)一(yī)條消息),獲取到(dào)的(dσ✘​©e)類似微(wēi)信或者qq的(de)消息列表

網上(shàng)大(dà)部分(fēn)是©‍‌(shì)錯(cuò)誤的(de),下(xià)β★≠面看(kàn)下(xià)我的(de)表:

SET FOREIGN_KEY_CHECKS=0;

--'∑λ ----------------------------
-φ∑- Table struc&₹ture for `tbl05`
-- ---₩≤÷φ-------------------------
DROP&nb>✔‌sp;TABLE IF EXISTS↕₹ `tbl05`;
CREATE TABLE&nδ←×bsp;`tbl05` (
  `i₹πd` int(11) NOT σ≥≈;NULL AUTO_INCREMEN™✔‍T,
  `from€‌₩£` int(11) NOT NULL,
&nb↓γsp; `to` int(☆ 11) NOT NULL,
"≥  `msg` va<α& rchar(255) NOT NULL,
 ★π ; `tline` intγ₩♠(11) NOT NULL DEFAU±$"€LT '0',
§β  `aaaa` varch→‌♥ar(255) NOT NULL&n¥♥bsp;DEFAULT '',
¥↔®
  PRIMARY K÷•♦≈EY (`id`)
) φ→ENGINE=MyISAM AUTO_INCREMENT=12' δ★ DEFAULT CHARSET=utf $☆8;

-- --------♠¶↓≥--------------------
↑π∏↓
-- Records of&n<π∞λbsp;tbl05
-- --------™©Ω--------------------
INSER₽♦T INTO `tbl05` VAL÷™ ×UES ('1', '1&#©γα39;, '2', '55555↕÷ π5', '10'γ€;, '');
INSERT ♥∑INTO `tbl05` VALUES (π><∏'2', '1', ≥₩9;3', 'hhhhhh', ↕₹'10', '≤☆"');
INSERT INTO `tbl0→↕↓✘5` VALUES ♦↔('3', '3',&nπ≈∑₩bsp;'1', 'ooo$'oooooo', '↔ ‌∑10', '&Ω♣#39;);
INSERT INTOπ>§↔ `tbl05` VALU¶§ES ('4', '2',♦∑✔ '3', '↔®hhhhhh', '10', &#≤ Ω✘39;');
INSERT&nbs₩₩p;INTO `tbl05`&n☆​<×bsp;VALUES ('5', &#δ¥39;3', '2', ​Ω9;888888888888888',↕β '11',&nσ÷£bsp;'');
IN‍α←♣SERT INTO `t×πbl05` VALUES ('6',‌" '2', ™<£¥'1', '我就(λ₽jiù)是(shì) 神', 'ε ;9', '');
<∏INSERT INTO `tbl05`&nb★₹δsp;VALUES ('7', &¶←#39;2', '1₩₽λ9;, 'hhhhhh', '≠δ12', '');
INSERT ×™>;INTO `tbl05` VALUES Ω>;('8', '4'♠→;, '5', ​×π¶'你(nǐ)好(hǎo)', '0&#£δ39;, '');
♦ε₹&INSERT INTO `tbl05` VAγβLUES ('9', ↕™9;5', '4',&n®‌★bsp;'你(nǐ)也(yě)好(hǎo)',&nb♥↔β§sp;'1', '')€>;
INSERT INTO `tbl05` ≥←∏;VALUES ('10"&α9;, '4', '5£÷9;, '你(nǐ)是(shì§'§♣)哪裡(lǐ)的(de)', ≥$9;2', '');
INS 'ERT INTO `tbl05δΩ≥` VALUES (&#"®∞®39;11', '5', &#₩©39;4', '我是(shì)北(b∞¥ěi)京的(de)', '3δ♦∑9;, '')↕φ™;

建好(hǎo)表 後,看(kàn)下(xià)查詢語句

SELECT T1.id, T1.`fr$λom`, T1.`to`, T1.♦→ →msg, T1.tline ∏♣‍φ;FROM 
(
SELECT id, `f♠​©αrom`, `to`, tline, ≤↑•msg, 
CASE 
WHEN (`×&from` <= `to`)
THEN ←∏Ωπ;CONCAT(`from`, '-'↑"♠™, `to`) 
ELSE CONCAT(✘₽`to`, '-', `fr∞β✘ om`) 
END AS ft FRφ‍↔​OM tbl05) AS T1
IN§÷ε←NER JOIN
(
SELECT♦₹₽< MAX(tline) AS&nb‌ sp;tline,
CASE 
φ£↑WHEN (`from` &®←γlt;= `to`)
THEN&★γδ∏nbsp;CONCAT(`from`,&nb♥Ω★sp;'-', `to`)&nb‌>✘sp;
ELSE CONCAT(`to`,&€≤nbsp;'-', `fro✘λαm`) 
END AS&nb‌↑≈sp;ft 
FROM Ω<tbl05
GROUP BY ft
©​↑
) AS T2
ON T1.tline& ×‍ = T2.tline AND&nb≥$sp;T1.ft = T2.ft

以上(shàng) 為(wèi)查詢到(dào)所有(yǒu)的(de)λ©£  消息列表 。

如(rú)果查詢 1号用(yòng)戶的(de)  消息列表 &<÷nbsp; 在末尾增加  &nbsβ÷↓✔p; where   T1.`from`= 1 &nbσ∞πsp;or  T1.`to`=1 &≈↑¥nbsp;


查詢 到(dào) 1号用(yòng)戶 的(de)消息&©★列表,并增加   對(duì)方的(de) 信息

left join test_user asΩ ε↓ U on ♥ ¶;
case  WHEN T1.f‌εasongid=1 THEN  T1.j©φβieshouid = U.userid
ELSE↓δ‍÷  T1.fason₽→gid  =&nbs Ωσp;U.userid  END

完整代碼:

SELECT T1.id, T1.`faso↕π☆φngid`, T1.`jieshouid`, T1.neφ∏"irong, T1.shijian,U.nicheng©☆   from
(
SE♣>LECT id, `f$↑♥ asongid`, `jieshouid`ε±, shijian, ne♦♥εirong, 
CASE 
★φ
WHEN (`fasongid$×✔♣` <= `jieshouid≥©§>`)
THEN CONCAT(`fasongid`,ββ↔≥ '-',&nα≈α↔bsp;`jieshouid`) 
ELSE∏↑↔ CONCAT(`jieshouid`,&©‍₹nbsp;'-', `fasongid`)&nbλ≤sp;
END AS ft&nbs∏×π™p;from test_liaotian) ∞→​AS T1
INNER JOγ®IN
(
SELECT MA←&X(shijian) AS shijian,÷₹
CASE 
WHEN (`fasongid` ₽ <= `jie ♦₩☆shouid`)
THEN CON£ CAT(`fasongid`, ∑>&Ω9;-', `jieshouid`) 
ELSE₩ ♠ CONCAT(`jieshouid`, '-&# ‍39;, `fasongid`) ÷♥;
END AS ft&nb¥∏β∏sp;
from test_liaotian
GR↑✔OUP BY ft &↓γφ★nbsp;
) AS T2
ON T1.s→<→hijian = T2.shijiaα>≠n AND T1.ft<α' = T2.ft

left joi®'±✘n test_user ×₩∞€as U on 
case& ‌nbsp; WHEN T1.f€£✔asongid=1 THEN  £✘±;T1.jieshouid = U.user ≤>id
ELSE  T1.faλ≥‍∞songid  = U.userid&π∏  END
where&"'✘nbsp;  T1.`fasongid`=&n σ ↕bsp;1  or &‍ nbsp;T1.`jieshouid`=1


注:  字段名改了(le),使用(y ∞↑♠òng)了(le)  test_user表,₽α完整的(de)表設計(jì)可(kě)以找站(zhàn)長(γ∏☆€cháng)要(yào)