mapper中代码
select
AA.fileID,
AA.file_address,
AA.uploader,
AA.upload_time,
AA.parent_module,
AA.submodule,
AA.file_name
from (
select if (@pa=f.fileID,@rank:=@rank+1,@rank:=1) rank,
@pa:=f.fileID as fileID,
f.file_address,
f.uploader,
f.upload_time,
f.parent_module,
f.submodule,
f.file_name
from (
select
fileID,
file_address,
uploader,
upload_time,
parent_module,
submodule,
file_name
from files
<where>
<if test="parent_module != '' and parent_module != null">parent_module = #{parent_module}</if>
<if test="fileID != '' and fileID != null ">AND fileID = #{fileID}</if>
<if test="submodule != '' and submodule != null ">AND submodule = #{submodule}</if>
</where>
order by fileID asc, upload_time desc
) f,
(select @rank:=0,@pa='') tt
) AA
where AA.rank=1
order by AA.fileID
mysql中代码
select
AA.ID,
AA.fileID,
AA.file_address,
AA.uploader,
AA.upload_time,
AA.parent_module,
AA.submodule,
AA.file_name,
AA.ps_log_id,
AA.blueprint_category
from (
select if (@pa=f.fileID,@rank:=@rank+1,@rank:=1) rank,
@pa:=f.fileID as fileID,
f.ID,
f.file_address,
f.uploader,
f.upload_time,
f.parent_module,
f.submodule,
f.file_name,
f.ps_log_id,
f.blueprint_category
from (
select
ID,
fileID,
file_address,
uploader,
upload_time,
parent_module,
submodule,
file_name,
ps_log_id,
blueprint_category
from files
WHERE parent_module = '产品中心'
AND submodule='外部文档'
AND fileID='PJ002'
order by fileID asc, upload_time desc
) f,
(select @rank:=0,@pa='') tt
) AA
where AA.rank=1
order by AA.fileID
然后前者不能实现按fileID分组后取第一个,后者能实现分组取第一个,别问我为啥不用group by,服务器的mysql的sql_mode属性值无法去掉only_full_group_by,怎么修改配置文件都没用,只能写这么麻烦的sql,但转换到mapper文件里效果就不行了