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

我在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中,运行的时候会报错

图片说明

http://blog.csdn.net/zcwforali/article/details/72811397

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

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

有个表没有sale_count这个字段

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

图片说明
有这种写法?

再套一层 你这个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不支持这样嵌套图片说明