以下sql存在多条一样的general_master_type_nm数据,怎么修改呢? WITH -- 表示権限区分が0の汎用マスタ区分を洗い出す a1 AS ( SELECT DISTINCT GENERAL_MASTER_TYPE, DISPLAY_AUTH_CLS AS displayAuthCls FROM m_general WHERE DISPLAY_AUTH_CLS = '0' ), -- 更新権限区分が0の汎用マスタ区分を洗い出す a2 AS ( SELECT DISTINCT GENERAL_MASTER_TYPE, UPD_AUTH_CLS AS updAuthCls FROM m_general WHERE UPD_AUTH_CLS = '0' ), b AS ( SELECT GENERAL_MASTER_TYPE, GENERAL_MASTER_TYPE_NM, MIN( DISPLAY_AUTH_CLS ) AS displayAuthCls, MIN( UPD_AUTH_CLS ) AS updAuthCls FROM m_general GROUP BY GENERAL_MASTER_TYPE, GENERAL_MASTER_TYPE_NM ),-- a と bを合併した最小表示権限区分 c AS ( SELECT b.GENERAL_MASTER_TYPE, b.GENERAL_MASTER_TYPE_NM, IFNULL ( a1.displayAuthCls, b.displayAuthCls ) AS displayAuthCls, IFNULL ( a2.updAuthCls, b.updAuthCls ) AS updAuthCls FROM b LEFT JOIN a1 ON b.GENERAL_MASTER_TYPE = a1.GENERAL_MASTER_TYPE LEFT JOIN a2 ON b.GENERAL_MASTER_TYPE = a2.GENERAL_MASTER_TYPE ) -- 抽出結果 SELECT DISTINCT (mg.GENERAL_MASTER_TYPE), mg.GENERAL_MASTER_TYPE_NM, c.updAuthCls, c.displayAuthCls, #{authority.slpmAuthCls} as slpmAuthCls FROM m_general mg INNER JOIN c ON mg.GENERAL_MASTER_TYPE = c.GENERAL_MASTER_TYPE AND (c.displayAuthCls <![CDATA[ <> '0']]> OR ( #{authority.slpmAuthCls} = '0' AND #{authority.levelType} ='1') ) WHERE 1 = 1 <if test="!containsDel"> and mg.del_flg <![CDATA[ <> '1']]> </if> ORDER BY mg.GENERAL_MASTER_TYPE_NM ASC </select>
时间: 2023-06-07 21:10:14 浏览: 104
可以使用UPDATE语句来修改数据库中的数据。可以使用GROUP BY语句来将重复的数据进行合并,使用MAX或MIN函数选择其中一个来保留一个唯一的值。例如,可以这样编写一个UPDATE语句:
UPDATE m_general
SET DISPLAY_AUTH_CLS = MIN(DISPLAY_AUTH_CLS), UPD_AUTH_CLS = MIN(UPD_AUTH_CLS)
WHERE GENERAL_MASTER_TYPE_NM = '需要修改的数据'
GROUP BY GENERAL_MASTER_TYPE
其中,WHERE子句可以根据需要进行修改,以筛选出要修改的数据,例如可以按照GENERAL_MASTER_TYPE_NM字段来筛选。GROUP BY子句可以根据需要进行修改,以便将重复的数据合并为一个记录。如果要保留其他字段的值,可以在SET子句中添加其他字段的值。
阅读全文