以下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 17:10:14 浏览: 32
可以使用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子句中添加其他字段的值。
相关问题
docker-compose mysql配置修改 sql_mode
好的,我会为您解答关于 docker-compose mysql 配置修改 sql_mode 的问题。您可以按照以下步骤操作:
1.在您的 docker-compose.yml 文件中,找到 mysql 服务对应的配置部分。
2.在该配置部分中,找到 environment 配置项,并添加以下内容:
MYSQL_ALLOW_EMPTY_PASSWORD=true
MYSQL_DATABASE=db_name
MYSQL_USER=user
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=root
其中,MYSQL_ALLOW_EMPTY_PASSWORD 表示允许使用空密码,MYSQL_DATABASE 表示要创建的数据库名称,MYSQL_USER 表示要创建的数据库用户,MYSQL_PASSWORD 表示该用户的密码,MYSQL_ROOT_PASSWORD 表示 MySQL 根用户的密码。您可以根据实际情况修改这些值。
3.接着,在该配置部分中,找到 volumes 配置项,添加以下内容:
- ./mysql-data:/var/lib/mysql
其中,./mysql-data 表示映射宿主机上的目录到容器中的 /var/lib/mysql 目录,用于保存 MySQL 数据。
4.最后,在该配置部分中,找到 command 配置项,添加以下内容:
command: --sql-mode=""
该命令表示将 MySQL 的 sql_mode 参数设置为空,以使其兼容与其他数据库系统的应用程序。
以上就是关于 docker-compose mysql 配置修改 sql_mode 的全部内容,希望对您有所帮助。
sql-mode去掉了only_full_group_by不生效依然报错
您好!对于SQL模式中的 `ONLY_FULL_GROUP_BY`,它是在MySQL 5.7版本引入的一种严格模式,用于确保`GROUP BY`语句中的列都包含在聚合函数中。如果您在MySQL 5.7版本以后的版本中遇到了该报错,可能有以下几种原因:
1. SQL模式未正确修改:请确保您已经修改了MySQL的全局配置文件(例如my.cnf或my.ini),并在[mysqld]部分添加了`sql-mode`参数。
2. 修改不生效:有些MySQL版本可能在其他配置文件中或启动脚本中设置了`sql-mode`参数,您需要检查这些文件并确保修改生效。
3. 动态设置被覆盖:如果您在MySQL命令行或客户端中使用`SET`语句修改了`sql_mode`参数,但没有永久保存到配置文件中,则重启MySQL服务器后会恢复默认设置。
4. 其他因素:有时候报错可能与其他SQL查询或表结构有关。请确认您的GROUP BY语句是否符合语法规则,并且没有其他引起报错的因素。
为了更详细地排查问题,我建议您提供更多的信息,例如具体的报错信息、MySQL版本、相关的SQL查询语句等。这样我可以更好地帮助您解决这个问题。
相关推荐















