Mapper icon indicating copy to clipboard operation
Mapper copied to clipboard

最大值对应的记录,不支持from 前面的子查询?

Open taotao365s opened this issue 3 years ago • 0 comments

目标sql

SELECT
        a.*
    FROM
        sys_user a,
        (SELECT
            MAX(USER_ID) AS 'MAX_USER_ID'
        FROM
            sys_user) b
    WHERE
        a.USER_ID = b.MAX_USER_ID;

provider ,这里的两个TODO好像都不行,是不是不支持子查询???

public String selectMax(MappedStatement ms) {
        Class<?> entityClass = this.getEntityClass(ms);
        String tableName = this.tableName(entityClass);

        // 将返回值设置成ResultMap
        setResultType(ms, entityClass);

        StringBuilder sql = new StringBuilder();
        sql.append(DynamicSqlUtil.selectTableAColumns(entityClass));
        sql.append(" FROM ");
        sql.append(tableName).append(" AS a,");
        sql.append(" ( ").append(DynamicSqlUtil.getMaxSubQuerySQL())
           // 这是什么鬼,着的常量可以
//        sql.append(" where age=12 ")
           //TODO 这里不能嵌套
//           .append(SqlHelper.whereAllIfColumns(entityClass, false))
           .append(" )").append(" b ");
        sql.append(DynamicSqlUtil.whereTableAJoinColumns()).append(" ");

        //TODO 这里也不能嵌套
//        sql.append(DynamicSqlUtil.whereTableAFilterColumns(entityClass, false, false));
// 下面这个可以
//        sql.append(" and age=12");
        return sql.toString();
    }

taotao365s avatar Apr 29 '21 07:04 taotao365s