国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql中GROUP BY 和ORDER BY 組合使用注意事項

2024-07-24 12:36:39
字體:
供稿:網(wǎng)友

今天在做一個微信的在線客服系統(tǒng)的時候,東西需要從一個表中調(diào)最近的用戶,但是這個表是一個消息記錄表結(jié)構(gòu)如下,例子:

  1. ID  uid  content  weid      addtime   
  2. 1  2  3213123  12  …..       
  3. 2  3  3213123  12  ….   
  4. 3  2  321312  12  …   
  5. 3  1  xxx  12  3232  

我們的需求是從消息表中掉出來最近的用戶,剛開始的時候用的是這樣寫的,代碼如下:

  1. SELECT f . *  
  2. FROM  `enet_wechat_message` AS m 
  3. LEFT JOIN  `enet_wechatfans` AS f ON m.fakeid = f.openid 
  4. AND m.weid =135 
  5. AND f.weid =135 
  6. WHERE f.fakeid IS NOT NULL  
  7. GROUP BY m.fakeid 
  8. ORDER BY m.id DESC  
  9. LIMIT 10 

但是這些寫完之后發(fā)現(xiàn)不是我想要的結(jié)果,通過查資料發(fā)現(xiàn)MYSQL的執(zhí)行順序是如下代碼:

from… where…group by… having…. select … order by…

這樣我最后的ORDER BY 是在GROUP BUY 之后才進行的排序所以數(shù)據(jù)不是我想要的,采用如下方法可以解決,代碼如下:

  1. SELECT *  
  2. FROM ( 
  3. SELECT *  
  4. FROM  `enet_wechat_message`  
  5. WHERE weid =135 
  6. ORDER BY  `id` DESC 
  7. ) `temp`  m.survivalescaperooms.com 
  8. GROUP BY fakeid 
  9. ORDER BY  `id` DESC 

LIMIT 10使用子查詢,先對結(jié)果集進行排序,然后在進行分組,這樣就可以實現(xiàn)我需要最新的幾個用戶了,當(dāng)然這個代碼的業(yè)務(wù)邏輯還需要用戶的個人信息,所以我最終的代碼是如下的:

  1. SELECT f . *  
  2. FROM ( 
  3. SELECT *  
  4. FROM ( 
  5. SELECT *  
  6. FROM  `enet_wechat_message`  
  7. WHERE weid =135 
  8. ORDER BY  `id` DESC 
  9. ) `temp`  
  10. GROUP BY fakeid 
  11. ORDER BY  `id` DESC  
  12. LIMIT 10 m.survivalescaperooms.com 
  13. AS m 
  14. LEFT JOIN  `enet_wechatfans` AS f ON m.fakeid = f.openid 
  15. WHERE f.fakeid IS NOT NULL  
  16. GROUP BY m.fakeid 
  17. ORDER BY m.id DESC

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 静安区| 舟山市| 沙坪坝区| 龙门县| 霍邱县| 奉节县| 呈贡县| 鄱阳县| 克山县| 金昌市| 郑州市| 桑植县| 和田市| 芦山县| 衡阳县| 沁源县| 镇坪县| 青神县| 乌兰浩特市| 巩留县| 肇东市| 临邑县| 克什克腾旗| 资溪县| 松原市| 贵阳市| 静安区| 横峰县| 松江区| 通城县| 吉隆县| 商城县| 枝江市| 隆德县| 蕲春县| 桐乡市| 枣强县| 溧阳市| 开平市| 南投市| 瓦房店市|