北京华夏安泰技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需要一步,快速开始

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 464|回复: 1

mysql 不支持 with...as...语法,建议改为子查询

[复制链接]

13

主题

214

帖子

884

积分

内部工作人员

积分
884
发表于 2017-8-14 14:46:20 | 显示全部楼层 |阅读模式
WITH TT AS (
    SELECT
        pl.LOAN_ID,
        pl.ORG_ID,
        pl.FINANCEAL_YEAR,
        pl.INNER_BUDGET_ID,
        CASE
    WHEN (bib.fund_source = '1') THEN
        bib.inner_budget_name
    WHEN (bib.fund_source = '2') THEN
        concat(
            '实有资金 - ',
            bib.INNER_BUDGET_NAME
        )
    END AS inner_budget_name,
    bib.avail_amount,
    pl.LOAN_ORG_ID,
    (
        SELECT
            so.org_name
        FROM
            sys_organization so
        WHERE
            so.org_id = pl.LOAN_ORG_ID
    ) AS LOAN_ORG_ID_V,
    pl.EXPEND_ID,
    (
        SELECT
            se.expend_name
        FROM
            STANDARD_EXPEND se
        WHERE
            se.expend_id = pl.EXPEND_ID
    ) AS EXPEND_ID_V,
    pl.RESOUCE_ID,
    pl.UNIT_ID,
    pl.LOAN_CODE,
    pl.PAYOUT_STATE,
    GET_DICTIONARY_NAME (
        PAYOUT_STATE,
        'JH_BaoXiaoDZT'
    ) AS PAYOUT_STATE_V,
    pl.LOANER,
    (
        SELECT
            sp. NAME
        FROM
            sys_person sp
        WHERE
            sp.person_id = LOANER
    ) AS LOANER_V,
    pl.LOAN_TIME,
    pl.OPERATOR,
    (
        SELECT
            su. NAME
        FROM
            sys_user su
        WHERE
            su.user_id = pl.OPERATOR
    ) AS OPERATOR_V,
    to_char (
        pl.OPERATE_TIME,
        'yyyy-MM-dd'
    ) AS OPERATE_TIME,
    pl.REASON,
    pl.LOAN_AMOUNT,
    pl.RETURNED_AMOUNT,
    pl.REMAINING_AMOUNT,
    pl.REFUND_STATE,
    pl.VERIFIER,
    pl.VERIFY_TIME,
    pl.CASHIER,
    pl.CASH_ITME,
    pl.BOOKKEEPER,
    pl.BOOK_TIME,
    pl.ATTACH_ID,
    pl.ATTACH_REMARK,
    pl.REMARK,
    pl.LIMIT_REMARK,
    pl.LOAN_TYPE,
    GET_DICTIONARY_NAME (
        pl.LOAN_TYPE,
        'JH_JieKuanDLX'
    ) AS LOAN_TYPE_V,
    pl.LESSEE_CODE,
    pl.VOUCHER_ID,
    pl.BPM_ID
FROM
    PAYOUT_LOAN pl,
    BUDGET_INNER_BUDGET bib
WHERE
    pl.inner_budget_id = bib.inner_budget_id
AND pl.FINANCEAL_YEAR = '2017'
AND pl.inner_budget_id = '988eb28c-e11b-4cae-a8dc-78e6e19f06c8'
AND pl.LOAN_TYPE = '1'
AND pl.REFUND_STATE = '0'
)

SELECT
    TT.*
FROM
    TT

mysql 不支持with...as 语法,建议写成子查询,另外 mysql 子查询必须别名

回复

使用道具 举报

4

主题

179

帖子

692

积分

内部工作人员

积分
692
发表于 2017-9-21 10:36:50 | 显示全部楼层
本帖最后由 dirk_cong 于 2017-9-21 10:37 编辑

mysql 不支持with ... as 语法,但是可用通过mybatis 的 <include refid="名称" /> 标签进行sql 注入,仍可达到 with ...as 语法的效果,比单写子查询要方便一些如图所示


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册  

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则


小黑屋|手机版|Archiver|北京华夏安泰技术论坛  

GMT+8, 2019-6-20 23:05 , Processed in 0.109375 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表