mybatis中对于子查询列的排序问题 5C

我在mysql中直接写语句:
SELECT
bgb.goods_num,
bgb.goods_type_icon,
bgb.goods_id,
bgb.goods_name,
bgb.goods_sort,
bgt.type_name,
bgs.style_name,
bgbr.brand_name,
bgb.goods_code,
bgb.is_shelf,
(select sum(sku_sale_count) from busi_goods_sku AS bgsku WHERE bgb.goods_id=bgsku.goods_id) as sale_count
FROM
busi_goods_base AS bgb
LEFT JOIN busi_goods_type AS bgt ON bgb.goods_type_id=bgt.type_id
LEFT JOIN busi_goods_style AS bgs ON bgb.goods_style_id=bgs.style_id
LEFT JOIN busi_goods_brand as bgbr ON bgb.goods_brand_id=bgbr.brand_id
WHERE
bgb.is_del=0
ORDER BY
sale_count DESC

是 可以进行查询的,但是把它放到mybatis的mapper.xml中,运行的时候会报错

图片说明

10个回答

有个表没有sale_count这个字段

sale_count 这个要加上具体的表名,是哪个表里边的这个字段要写清楚才行。

cui929434
对吃没兴趣 用别名确定字段
一年多之前 回复
tr1912
王啸tr1912 这个明显不一样好吧。。。。
一年多之前 回复

select t.* from(你的sql) t,我以前也是遇到类似问题

qq_14928713
qq_14928713 回复王啸tr1912: 就t.* 可以了啊,不用写什么
一年多之前 回复
tr1912
王啸tr1912 t.*应该写什么?
一年多之前 回复

楼主,报错图片看不了啊,请重发一下。

图片说明
有这种写法?

再套一层 你这个sale_count 不在from的表中

select st.* from(
SELECT
bgb.goods_num,
bgb.goods_type_icon,
bgb.goods_id,
bgb.goods_name,
bgb.goods_sort,
bgt.type_name,
bgs.style_name,
bgbr.brand_name,
bgb.goods_code,
bgb.is_shelf,
(select sum(sku_sale_count) from busi_goods_sku AS bgsku WHERE bgb.goods_id=bgsku.goods_id) as sale_count
FROM
busi_goods_base AS bgb
LEFT JOIN busi_goods_type AS bgt ON bgb.goods_type_id=bgt.type_id
LEFT JOIN busi_goods_style AS bgs ON bgb.goods_style_id=bgs.style_id
LEFT JOIN busi_goods_brand as bgbr ON bgb.goods_brand_id=bgbr.brand_id
WHERE
bgb.is_del=0)st
ORDER BY
st.sale_count DESC

用别名确定你要分组或排序的字段 ,还有确定字段是否存在

mybatis不支持这样嵌套图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
子查询中的排序问题
基本数据是这样的rnif object_id('tb') is not null rn drop table tb rngo rncreate table tb([颜色] varchar(10),[大小] varchar(10), [大小ID] int, [数量] int) rninsert tb select '红色','X', 1,10 rninsert tb select '红色','S', 2,20 rninsert tb select '红色','M', 3,30 rninsert tb select '白色','S', 2,40 rninsert tb select '白色','M', 3, 50 rngo rnrndeclare @s varchar(8000) rnselect @s='select 颜色 ' rnselect @s=@s+',max(case 大小 when '''+大小+''' then 数量 else 0 end) ['+大小+']' rnfrom (select distinct 大小 from tb) as a rnselect @s=@s+' from tb group by 颜色' rnexec(@s) rnrnrn请问 [大小ID] 怎么加到: from (select distinct 大小 from tb) as a rn中, 使他能按[大小ID] 排序rnrn谢谢了:)
mybatis子查询
如上: 这种方式是把对关联表的查询单独拎出来, association的属性有property:查询结果存放的属性,javaType:查询结果返回的类型,select:拎出来的查询语句,而column:相当于是把参数赋给查询语句。 我在宁外的地方看到别人把查询语句放在一起,查询结果单独处理的 链接:https://blog.csdn.net/qq_36544760/article...
group by 和 子查询排序的问题
查询供应商中能够供应的产品样数最多的供应商。rnrnselect TOP 1 产品.供应商ID,COUNT(产品ID) as 数量rnfrom 产品,供应商rnwhere 产品.供应商ID = 供应商.供应商IDrngroup by (产品.供应商ID)rnorder by 数量 DESCrnrn这样写以后,我想要看到供应商表中的公司名称,加上去后就会出现 rn消息 8120,级别 16,状态 1,第 1 行rn选择列表中的列 '供应商.公司名称' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。rnrn错误 求大神指点,很难受rnrn其次小白相请教在子查询中不能用order,那如何排序呢,比如我只想要排名后的第一个人rnrn
SQL 子查询和排序问题
我在做 asp.net 项目时rn根据在子类表(class_db)rnrn想在前台显示 文章列表示前9个,之后还要 art_time (文章时间来显示) 降序排列rnrn我的Sql语句如下rnrnstring mysql="select top 9 art_id,art_title from art_db where art_c_id=(select class_id from class_db where class_name='游戏天地') ORDER BY art_time DESC";rnrn在前台是用 DataList 帮定的,如果不排序,是显示9个数据rn但是加上 ORDER BY art_time DESC 的话 她全部显示出来了,也有排序效果rn
MySql 子查询排序问题
select * from a where a.id in(select id from b where b.name='xx' order by b.createdtime desc)rnrnrn请问各位大侠 上面的语句 要按照select id from b where b.name='xx' order by b.createdtime desc这个的顺序输出rn该怎么写?rn在网上看到用 find_in_set 具体怎么用呢 怎么把select id from b where b.name='xx' order by b.createdtime desc这个弄到find_in_set 里呢?
SmallSql子查询排序的问题
SmallSql子查询排序语句如下:rnrnSELECT TOP "+pageSize+" * FROM MyApps WHERE id NOT IN ( SELECT TOP "+t+" id FROM MyApps where userId="+userId+" or Reserved2='true' ORDER BY id DESC ) and (userId="+userId+" or Reserved2='true') ORDER BY id DESCrnrn报错rnrn难道SmallSql不支持子查询排序排序?rn
关于子查询排序的问题
drop table #testrn下面的语句将数据内容横向排列,现在要改变列头的显示顺序,有什么方法可以实现阿!!rnrnrnCreate table #test (vBH char(10),GZLB char(10),JE int) rn go rn insert #test values('004','M05',100) rn insert #test values('004','M66',150) rn insert #test values('004','M03',110) rn insert #test values('001','M04',100) rn insert #test values('001','M02',150) rn insert #test values('001','M03',110) rn insert #test values('002','M03',99) rn insert #test values('002','M24',180) rn insert #test values('002','M01',150) rn insert #test values('003','M01',160) rn insert #test values('003','M80',170) rn insert #test values('003','M33',130) rn insert #test values('004','M05',99) rn insert #test values('004','M06',180) rn insert #test values('004','M02',150) rn GO rn select * from #test rn declare @sql varchar(8000) rnrn set @sql = 'select vBH' rn select @sql = @sql + ',sum(case GZLB when '''+GZLB+''' then JE end) ['+GZLB+']' rn from (select distinct GZLB from #test) as a rn rn select @sql = @sql+' from #test group by vBH' rn select @sql rn exec (@sql)rnrn以上语句直接到sql调试,就不贴图了rnrnrnrn
hibernate子查询排序问题
rn 有两张表 Test(id, tid, name, logintime) 与Test1(tid, age)rn Test中数据为rn id                  tid               name                logintimern 1                    1                  张三             1998-01-02rn 2                    2                  李四             1998-01-03rn Test1中数据位rn tid                age         gradern 1                   13            初一rn 2                   18            高三rn 我想通过 Test1表的tid查询Test中的tid,根据Test表logintime排序rn from Test1 as a where a.tid in(select b.tid from Test as b);rn 这句hibernate语句成功把两张表为符合各自的tid查出来了 只是如何排序呢?求解rn  rn
对于 list中的排序问题
1. 需求描述       一个List 里面 装了 很多的 Map        HashMap map = new HashMap();         map.put("name", "gjk");         map.put("id", "1");         map.put("num", 45);         list.add(map);        
排序、子查询
一、ORDER BY 排序 对SELECT语句查询得到的结果,按某些字段进行排序 与DESC或ASC搭配使用,默认为ASC 二、子查询 在查询语句中where条件子句中,又嵌套了另外一个查询语句 !注意 嵌套查询可由多个子查询组成,求解的方式是由里及外 子查询返回的结果一般都是集合,故而建议使用IN关键字
Mybatis子查询Collection中使用select问题。
使用mybatis子查询使用Collection集合,这个是能查出数据来的[img=https://img-bbs.csdn.net/upload/201805/28/1527475009_102705.png][/img][img=https://img-bbs.csdn.net/upload/201805/28/1527475016_579299.png][/img]查询的结果[img=https://img-bbs.csdn.net/upload/201805/28/1527475025_467907.png][/img]。然后再查另外的表,同样的代码。死活查不出数据。[img=https://img-bbs.csdn.net/upload/201805/28/1527475230_359570.png][/img][img=https://img-bbs.csdn.net/upload/201805/28/1527475240_34673.png][/img][img=https://img-bbs.csdn.net/upload/201805/28/1527475245_659372.png][/img]
Mybatis 递归子查询遇见的问题
在运用Springboot +springcloud+mybatis项目中,在菜单列表的三级查询中运用到mybatis递归子查询,然而在查询的时候,有好几次只执行了第一次查询,第二次子菜单不显示。 因为一直想着这个问题,做梦想到了这个问题的关键                                     SELECT strMenuId,
子查询中的排序与字符串接
CREATE TABLE #TEST (F1 int)rnINSERT INTO #TEST(F1) VALUES(8)rnINSERT INTO #TEST(F1) VALUES(10)rnINSERT INTO #TEST(F1) VALUES(7)rnINSERT INTO #TEST(F1) VALUES(9)rnINSERT INTO #TEST(F1) VALUES(1)rnrnrnDECLARE @SheetStatus varchar(8000)rnSET @SheetStatus = ''rnSELECT @SheetStatus = @SheetStatus + ','+ CAST ( F1 as varchar(10))rnFROM rn(rn SELECT distinct F1rn FROM #TESTrn --ORDER BY F1 DESC --想要倒序,可是子查询中不给排rn) ArnDROP TABLE #TESTrnrnSELECT SUBSTRING(@SheetStatus,2,8000)rnrn实际结果为:1,7,8,9,10 rn想要结果为:10,9,8,7,1rn
JTable 中列的排序问题
各位老大,谁能帮忙解决一下JTable中列的排序问题。
在FLEXGRID中的列排序问题。
如下的字段内容如何样式.rn 测试1中rn 测试10中rn 测试2中rn 测试21中rn 测试3中rn 测试31中rn 测试4中rnrn要求按里面的数字排序成如下样式.rnrn 测试1中rn 测试2中rn 测试3中rn 测试4中rn 测试10中rn 测试21中rn 测试31中rnrnrn即先汉文部份排序,相同的汉字部份按后面的数字排序,要求速度快。rn
关于SQL2008子查询排序问题
有一个表如下 rnuserinfornid name agern1 张三 18rn2 李四 20rn3 王五 22rn... 中间省略若干项rn60 马六 77rnrn表id为主键,自动增长列,id值无间隔1...60rn写一个查询rnselect Max(id) from (select Top 10 id from userinfo ) as arn查询结果为60rn加上排序rnselect Max(id) from (select Top 10 id from userinfo order by id ) as arn结果为10rn求解答
access 子查询结果排序问题
比如有两个表:rndanweirnid namern1 单位1rn2 单位2rnrndefenrnid did fen nianrn1 2 100 2011rn2 2 90 2011rnrn其中defen.did=danwei.id,我想获得,2011年内所有单位的总得分并用总分排序。rn我的语句:rnSELECT id, name, (select sum(fen) from defen b where a.id = b.did and nian = '2011') as fen from danwei a order by fen descrn为什么 order by fen desc不能用?要怎么排序?
datagrid中的列排序
急问怎样实现在vb.net中datagrid上,点击列头,就按此列排序的功能。给20分,只要实现,马上给分。急,在线等。rn
Mybatis,Order By排序问题
曾写过一篇博客,是接触了一段时间的mybatis开发总结的:《Mybatis,怀疑--使用--感悟》。又过去了一段时间,前不久和别人联调接口,遇到了mybatis的排序问题。这篇博客就来总结一下,在mybatis框架下,如何实现排序?     排序,是个很基础的需求。实现的时候只需要在查询语句后面加上order by 某个字段即可。在mybatis中,用工具可以帮助我们自动生成底层的一套东西,便
myBatis 动态生成排序问题。
假设有2个字段要排序。 分别为字段A ,字段B ,都可以ASC DESC rn假设有这样一个SQL 语句 rnSELECT * FROM XXX ORDER BY #a1 #b1rn参数传入 A DESC 结果运行没有排序,rn假设rnSELECT * FROM XXX ORDER BY $a1 $b1rn参数第一次运行传入rnA DESC 后面每次运行都变成了rnSELECT * FROM XXX ORDER BY A DESC 排序另外一个字段B的时候,实际上也就是在排序字段A的效果。。。rnrn定义了statementType="STATEMENT" 还是没有效果。。。rnrnrn
Mybatis 动态排序 #{} ${}问题
Mybatis 动态排序 #{} ${}问题 在写Mybatis动态排序是遇到一个问题,开始,我是这样写的 <if test="orderField !=null and orderField != '' "> order by t.#{orderField} #{orderType} </if> 发现报错,后来经过查阅资料发现,用#{}会多个' '导致SQL语...
MyBatis动态排序问题
MyBatis动态生成排序的问题 在使用MyBatis时加入来按指定字段进行排序
关于mysql5.6对于子查询的优化
分别在5.5.30和5.6.2中建立数据表及插入内容:rn[code=sql]rnCREATE TABLE t1(id int, PRIMARY KEY (id)) engine=innodb;rnINSERT INTO t1(id) VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);rnrnCREATE TABLE t2(rid int, id int, PRIMARY KEY (rid, id)) engine=innodb;rnINSERT INTO t2(rid, id) VALUES(547, 1),(547, 2),(547, 5),(547, 8),(203, 2),(203, 4),(203, 8);rn[/code]rnrn用explain查看执行结果:rn[code=sql]rnmysql> SELECT VERSION();rn+------------+rn| VERSION() |rn+------------+rn| 5.5.30-log |rn+------------+rn1 row in set (0.01 sec)rnrnmysql> explain SELECT * FROM t1 INNER JOIN t2 WHERE rid = 203 AND t2.id > 2 AND t2.id IN (SELECT t1.id FROM t1 INNER JOIN t2 USING(id) WHERE rid = 547);rn+----+--------------------+-------+--------+---------------+---------+---------+------------+------+--------------------------------+rn| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |rn+----+--------------------+-------+--------+---------------+---------+---------+------------+------+--------------------------------+rn| 1 | PRIMARY | t2 | range | PRIMARY | PRIMARY | 8 | NULL | 2 | Using where; Using index |rn| 1 | PRIMARY | t1 | index | NULL | PRIMARY | 4 | NULL | 10 | Using index; Using join buffer |rn| 2 | DEPENDENT SUBQUERY | t2 | eq_ref | PRIMARY | PRIMARY | 8 | const,func | 1 | Using index |rn| 2 | DEPENDENT SUBQUERY | t1 | eq_ref | PRIMARY | PRIMARY | 4 | func | 1 | Using where; Using index |rn+----+--------------------+-------+--------+---------------+---------+---------+------------+------+--------------------------------+rn4 rows in set (0.01 sec)rn[/code]rnrn[code=sql]rnmysql> SELECT VERSION();rn+-----------+rn| VERSION() |rn+-----------+rn| 5.6.10 | rn+-----------+rn1 row in set (0.00 sec)rnrnmysql> explain SELECT * FROM t1 INNER JOIN t2 WHERE rid = 203 AND t2.id > 2 AND t2.id IN (SELECT t1.id FROM t1 INNER JOIN t2 USING(id) WHERE rid = 547);rn+----+-------------+-------+--------+---------------+---------+---------+------------------+------+----------------------------------------------------+rn| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |rn+----+-------------+-------+--------+---------------+---------+---------+------------------+------+----------------------------------------------------+rn| 1 | SIMPLE | t2 | ref | PRIMARY | PRIMARY | 4 | const | 1 | Using where; Using index | rn| 1 | SIMPLE | t2 | eq_ref | PRIMARY | PRIMARY | 8 | const,test.t2.id | 1 | Using index | rn| 1 | SIMPLE | t1 | eq_ref | PRIMARY | PRIMARY | 4 | test.t2.id | 1 | Using index | rn| 1 | SIMPLE | t1 | index | NULL | PRIMARY | 4 | NULL | 10 | Using index; Using join buffer (Block Nested Loop) | rn+----+-------------+-------+--------+---------------+---------+---------+------------------+------+----------------------------------------------------+rn4 rows in set (0.00 sec)rn[/code]rnrn从执行策略上讲,5.6强于5.5,但不知道为什么,在实际生产环境中5.6在执行类似的sql语句时会很慢rn[code=sql]rnmysql> EXPLAIN SELECT t1.id FROM `t1` INNER JOIN `t2` USING(id) WHERE `t2`.`rid` =11825 AND `t1`.`id` IN (SELECT `t1`.`id` FROM `t1` INNER JOIN `t2` USING(id) WHERE `t2`.`rid` =413157); rn+----+-------------+-----------------+--------+---------------+---------+---------+----------------------------------------+------+------------------------------+rn| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |rn+----+-------------+-----------------+--------+---------------+---------+---------+----------------------------------------+------+------------------------------+rn| 1 | SIMPLE | t2 | ref | rid | rid | 3 | const | 6501 | Using index | rn| 1 | SIMPLE | t2 | ref | rid | rid | 7 | const,test.t2.id | 1 | Using index; [color=#FF0000]Start temporary[/color] | rn| 1 | SIMPLE | t1 | eq_ref | PRIMARY | PRIMARY | 4 | test.t2.id | 1 | Using index | rn| 1 | SIMPLE | t1 | eq_ref | PRIMARY | PRIMARY | 4 | test.t2.id | 1 | Using index; [color=#FF0000]End temporary[/color] | rn+----+-------------+-----------------+--------+---------------+---------+---------+----------------------------------------+------+------------------------------+rn[/code]rnrn这个语句在老版本的mysql上执行很快,但5.6上则非常慢rn而且,从执行策略上看,还多了Start temporary和End temporary,不解其意,特来问问。
对于mysql中字符串的排序
一个varchar 的字段 存放 1,2 11等 将字段*1或者+0可以将MySQL字符串字段按数值排序 select * from table where 1 order by id+0 desc; select * from table where 1 order by id*1 desc; ...
winform中datagridview中列排序问题
datagridview中有一列显示的时间,我想点击头部时按时间排序(没有绑定数据源,是一条一条add进去的),默认的排序排出的结果是错误,请高手指教!
MySQL子查询优化---目标列中的子查询执行情况分析-02
接续上一篇: MySQL子查询优化---目标列中的子查询执行情况分析 http://blog.163.com/li_hx/blog/static/18399141320154291133386/   7 mysql> select (select max(a) from t as t2) from t as t1;+------------------------------+| (sel
MySQL子查询优化---目标列中的子查询执行情况分析
问题: 在目标列处的子查询mysql优化分析器会进行什么优化吗?比如我的主sql返回1000条数据,那么目标列处的子查询会被执行1000次吗? 分析: 其实这个问题看似简单,却不容易回答。这里,包括了子查询的知识,包括了优化器的知识,还包括了执行器的知识;尤其是数据库系统中优化器和执行器的具体实现方式。所以我们如下抽丝剥茧,逐一深入讨论问题。 1 子查询出现的位置,可以是: 目标列 /
MyBatis中添加对exists子查询的支持
2016-12-21 更新 已经加入GitHub托管: [url]https://github.com/leitelyaya/mybatis-3[/url] 注意3.2.x 另外已修复ForEach污染全局变量的问题 实际使用效果嘛,[b]临时表数据越少越好[/b],如果不少,请放弃此优化 特感谢这篇博文讲解参数使用:[url]http://blog.csdn.net/isea533/a...
两个列的排序问题
请问如何按两个列来排列查询的结果rnrn一个列的排列是用 order by XXX descrnrn请指教rn
dw列排序问题
dw的sql:select id,dj,sl,mc,gg from table1rn现在操作如下rnvisible=0的列:id,djrn列排序改为如下:rnmc,gg,slrn现在我怎么通过代码一个个读取出显示的列,要求按以上顺序,即 mc,gg,sl
listview 的列排序问题
我的listview的第一列只有图标(表示状态),如何实现对图标列的排序.
列排序的问题!
表如下:rn表a rn日期 部门1编号 部门2编号 部门3编号 部门1收入 部门2收入 部门3收入rn2004 100 101 102 1000 2000 3000rn2005 100 101 102 1500 3000 5000rn2006 100 101 102 4000 8000 10000rnrn排序结果:rn日期 部门1编号 部门1收入 部门2编号 部门2收入 部门3编号 部门3收入rn2004 100 1000 101 2000 102 3000rn2005 100 1500 101 3000 102 5000rn2006 100 4000 101 8000 102 10000rnrn怎么写rn跪求!速度!rn
超链接列的排序问题
DataGrid原来是能排序的,DataGrid1_SortCommand()里的代码都写好了,但是加了一个超链接列以后,_SortCommand事件不能触发了,变为触发_ItemCommand事件,去执行DataGrid1_ItemCommand(),不知道是什么原因?
listview 的列排序问题.
我的listview的第一列只有图标(表示状态),如何实现对图标列的排序.
关于列排序的问题?
关于列排序的问题?rn表a中有(字符串型)字段为jine(金额),其储存的是例如5万元、50万元、500万元的数据。我现在想实现按钱数的多少排序(即去掉“万元”,再转化成整型),就是5是第一行,而500是最后一行,请问能实现么?语句怎么写??
绑定列的排序问题
小弟的datagrid中显示的数据都是绑定的,rn想要进行排序该如何实现呢?rn
datagrideview列排序问题
datagrideview中有一列可能是数字也可能是字符串,我想这样:如果这一列中全是数字的话就按整形的排序,如果有字符串的话就按字符串的顺序排序,请问各位高手有没有实现方法!(我的datagrideview是没有绑定数据源,是一行一行add进去的)
C1TrueDBGrid列排序的问题
如何做到C1TrueDBGrid列排序时,选中数据行的状态不变.rn如:rnrn列名:aaa bbb cccrn一行:111 222 123rn二行:123 333 555rn三行:133 444 666rn四行:144 766 909rnrn选中的是一行:111 222 123rn点击列“aaa"后排序后:rn列名:aaa bbb cccrn一行:144 766 909rn二行:133 444 666 rn三行:123 333 555rn四行:111 222 123rnrn目前选中还是一行:144 766 909rnrn怎么做到选中四行:111 222 123 呢??rn
datagridview 列排序问题?
有3列数据,是整数,datatable绑定到datagridview 的,如何实现点击head实现自定义排序,rn现在自动排序为1,10,2,3,4,默认是按字符串排序的,如何按整数排序?
模板列排序的问题
问一个模板列排序的问题,datagrid设置了允许排序的选项,但模板列的HeaderText就看不到了rn rn rn rn rn rn rn rnrn为了能让列的名字能显示出来,我在HeaderTemplate里加上了列的名字,但这样一来,模板列又不能排序了rn rn rn rn rn rn rn rn rn CDrn rn rnrn请问怎样才能又排序又能显示列的名字?谢谢
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法