收起左侧

求教两表怎么只关联附表的最新一条

4
回复
105
查看
[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 97 天

    [LV.6]普通吧粉

    发表于 2020-7-24 14:47:49 | 显示全部楼层 |阅读模式

    登录后查看本帖详细内容!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    求教查询方案:0 u  V  |- `. n" m
    4 W3 [( L/ s, ~% |7 ]% h! T
    Message 表 : id , user ,createDate% W- p; O/ @" ^7 P# E1 m2 x
    7 u" ?4 t- w. i& T
    MessageDetail 表 :  msgId, salesStaff ,lastEditDate ,remark# X5 \2 p. A) S( H* ?
    % h/ X/ n8 ?. J! K2 G
    MessageDetail 表 用msgId关联 Message 表,MessageDetail 表可能有多条,但我只要 lastEditDate 最大的
    " P. Y. ~  B# T, t6 \( G
    0 q( v2 g8 p1 z' C
    3 L: T4 O( D  v$ `3 s- H( A6 v. j; @6 x* g' e7 N! c
  • TA的每日心情

    20 小时前
  • 签到天数: 1302 天

    [LV.10]以吧为家

    发表于 2020-7-26 18:09:20 | 显示全部楼层
    关联查询语句后面加个 ORDER BY lastEditDate DESC 然后取第一条不行么?
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 97 天

    [LV.6]普通吧粉

     楼主| 发表于 2020-7-27 16:15:09 | 显示全部楼层
    itjc8 发表于 2020-7-26 18:09( o; [; S( {% R2 m& \
    关联查询语句后面加个 ORDER BY lastEditDate DESC 然后取第一条不行么?

    1 o+ n) Q3 ]& X, R  s% S现在做法是+ T- K6 m: _' k) a) t
    select a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from message a2 u: C; t4 a' n/ k$ s
    join messageDetail b on a.id=b.msgId- u, `  r% z  J" w+ n3 D
    and b.lastEditDate=(select max(c.lasteditdate)from messageDetail c where c.messageId=a.messageId )8 e6 j8 f* i% J6 o, X( C# t  R& U
    where b.salesStaff='zhoujielun'
    ' I( p& v5 y0 v% F0 z5 s2 P查起来贼慢...想优化一下
    回复

    使用道具 举报

  • TA的每日心情

    20 小时前
  • 签到天数: 1302 天

    [LV.10]以吧为家

    发表于 2020-8-6 06:00:32 | 显示全部楼层
    haoffy 发表于 2020-7-27 16:15
    ' @: v$ P/ R/ V现在做法是. U! w& R' H1 r3 O! ~+ M
    select a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from mess ...

    . f7 k# G. p$ A0 d6 @4 W: Pselect a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from message a4 C+ m! J7 `2 j$ j* p! w# P
    (left或right) join messageDetail b on a.id=b.msgId AND b.salesStaff='zhoujielun' ORDERBY b.lastEditDate DESC LIMIT 1;
    , y6 s( p9 r& q% a$ B( f这是我的大概思路 能取出的多条数据按b.lastEditDate降序排,取第一条就行了,能不用子查询最好不要用子查询.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 97 天

    [LV.6]普通吧粉

     楼主| 发表于 2020-8-7 15:31:05 | 显示全部楼层
    itjc8 发表于 2020-8-6 06:00
    * Q' y5 C. ], ^% N! zselect a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from message a
    " G! ^7 v: N" N(left ...

    6 P, Z8 B0 k2 B  Q  ^( u% j8 h6 _$ K尽量不子查询的道理我懂,但这种方法只能查一条数据喔......只查'周杰伦' 还行,,,如果要查全部'男歌星' 的 列表就不行了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则