见贤思小齐,知足常乐呵

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

参数排序方法,只能作用于临时表,不能作用于join的结果。不然报错!!!   

正确用法如下:

 

   set @p = null; set @r = 0;

 

    select record_id,doctor_name,doctor_guid, rank,create_date
    from
    ( 
               SELECT
                  s.*,
                  if(@p=s.record_id,@r:=@r+1,@r:=1) as rank,
                 @p:=s.record_id
              from
            (
                   select a.record_id,a.doctor_name,a.doctor_guid,create_date,a.id
                   from hmcdss2.mt_patient_record_doctor a
                   join rp_update_gc_patient_info b on a.record_id=b.record_id
                   where doctor_type = 4 and source_type=1
            )s
             order by s.record_id,s.id desc
   ) t
  where rank = 1

错误用法:

   set @p = null; set @r = 0;

   select
   record_id, doctor_name, doctor_guid
   from

   (

    select

            a.record_id,a.doctor_name,a.doctor_guid,
            if(@p=a.record_id,@r:=@r+1,@r:=1) as rank,
           @p:=a.record_id
     from hmcdss2.mt_patient_record_doctor a
     join rp_update_gc_patient_info b on a.record_id=b.record_id
    where doctor_type = 2
    order by a.record_id,create_date desc
   ) t

   where rank = 1

  

 

posted on 2021-11-22 20:22  Suckseedeva  阅读(105)  评论(0编辑  收藏  举报