回答

收藏

SQL获得左联最大的ID字段

技术问答 技术问答 171 人阅读 | 0 人回复 | 2023-09-14

我正在尝试从tblimage从每个用户中提取tblimage中的maxid相应的照片。目前,我正在从消息表中获取所有消息,并为发布消息的用户提供随机照片。我希望这张照片是最新上传的照片。根据目前的写作方式,它只是从桌子上拉出一张随机照片。建议是什么?
4 b1 G$ H; K8 o% k: a表面结构如下:
0 j6 z* M  l6 z. f- ^& o' Z- B消息:msgid,消息,user_id,event_id
- U5 f; P( h$ n: c    tblimage:id,照片,userid9 }$ q# q; D' D4 V8 R/ n6 H7 N& b3 a
SELECT messages.*,tblimage.photo,max(tblimage.id)         FROM messages LEFT JOIN tblimage ON messages.user_id = tblimage.userid         GROUP BY messages.msg_id,messages.user_id         ORDER BY messages.msg_id DESC,tblimage.id desc               
% V! |" r3 {: u! X7 f1 t    解决方案:                                                               
  e- {9 Y* C" J* u# ?                                                                尝试
4 O$ u7 }: J$ p: B. ZSELECT messages.*,T2.photoFROM messagesLEFT JOIN (SELECT userid,MAX(id) AS maxid           FROM tblimages           GROUP BY userid) AS T1ON messages.user_id = T1.useridLEFT JOIN tblimages AS T2ON T2.id = T1.maxidORDER BY messages.msg_id DESC会在tblimages找到每个用户max(id),然后使用该值将每个用户添加到用户的最新照片中。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则