From 51204577e303768f0ba4460beda1c96af7c9e33e Mon Sep 17 00:00:00 2001 From: qiurunze Date: Mon, 14 Jan 2019 14:34:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++--- docs/mysql-2.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e05e853..577a4b2 100644 --- a/README.md +++ b/README.md @@ -81,16 +81,16 @@ #### [分布式系统发展历程(已更新)](/docs/fenbushi.md) #### [生产环境内存调优](/docs/jvm-goods.md) #### [mybatis源码解析--未更新](/docs/mybatis-code.md) -#### [redis 使用与进阶以及如何进行集群--更新2/3](/docs/redis-good.md) +#### [redis 使用与进阶以及如何进行集群--已更新](/docs/redis-good.md) #### [spring源码--未更新](/docs/redis-code.md) #### [分布式治理框架-dubbo - zk - 解析--未更新](/docs/redis-code.md) #### [通信mq-Kafka--未更新](/docs/redis-code.md) #### [微服务框架--未更新](/docs/redis-code.md) -------------------------------------------------| #### [mysql数据库优化及架构学习](/docs/mysql.md) -##### [mysql数据库设计规范](/docs/mysql.md) +##### [mysql数据库设计规范(已更新)](/docs/mysql.md) ##### [mysql数据库设计实例](/docs/mysql-1.md) -##### [mysql数据库执行计划分析](/docs/mysql-2.md) +##### [mysql数据库执行计划分析(已更新)](/docs/mysql-2.md) ##### [mysql数据库备份和恢复](/docs/mysql-3.md) ##### [mysql数据库架构变迁](/docs/mysql-4.md) --------------------------------------------------| diff --git a/docs/mysql-2.md b/docs/mysql-2.md index 50187c9..30cc026 100644 --- a/docs/mysql-2.md +++ b/docs/mysql-2.md @@ -107,4 +107,63 @@ 如何删除重复数据 删除评论表中的对同一个商品的重复评论,只保留最早的一条 - \ No newline at end of file + |--- 查看是否存在对于同一订单同一商品的重复评论,如果存在,进行后续步骤 + 查询语句: + SELECT order_id,product_id,COUNT(*) FROM product_comment + GROUP BY order_id,product_id HAVING COUNT(*) > 1; + + |--- 备份product_comment表(避免误删除的情况) + CREATE TABLE bak_product_comment_190108 AS SELECT * FROM product_comment; + 错误代码:1786 Statement violates GTID consistency:CREATE TABLE ... SELECT. + 则换用下面的语句 + CREATE TABLE bak_product_comment_190108 AS LIKE product_comment; + INSERT INTO bak_product_comment_190108 SELECT * FROM product_comment; + 错误代码:1786 + Statement violates GTID consistency:CREATE TABLE ... SELECT. + 错误原因 + 这是因为在5.6及以上的版本内,开启了 enforce_gtid_consistency=true 功能导致的,MySQL官方解释说当启用 enforce_gtid_consistency 功能的时候,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行。 + 解决办法 + + |---- 修改 : + SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off; + 配置文件中 : + ENFORCE_GTID_CONSISTENCY = off; + |---- + create table xxx as select 的方式会拆分成两部分。 + create table xxxx like data_mgr; + insert into xxxx select *from data_mgr; + 如果表数据量比较大,则使用mysql dump的方式导出成文件进行备份 + + + |---- 删除同一订单的重复评论 + 删除语句: + DELETE a FROM product_comment a + JOIN( + SELECT order_id,product_id,MIN(comment_id) AS comment_id + FROM product_comment + GROUP BY order_id,product_id + HAVING COUNT(*) > 1 + ) b on a.order_id = b.order_id AND a.product_id = b.product_id + AND a.comment_id > b.comment_id; + + + 分区间统计 + + 统计消费总金额大于1000元的,800到1000元的,500到800元的,以及500元以下的人数 + + + SELECT + COUNT(CASE WHEN IFNULL(total_money,0) >= 1000 THEN a.customer_id END) AS '大于1000' + ,COUNT(CASE WHEN IFNULL(total_money,0) >= 800 AND IFNULL(total_money,0)<1000 + THEN a.customer_id END) AS '800~1000' + ,COUNT(CASE WHEN IFNULL(total_money,0) >= 500 AND IFNULL(total_money,0)<800 + THEN a.customer_id END) AS '500~800' + ,COUNT(CASE WHEN IFNULL(total_money,0) < 500 THEN a.customer_id END) '小于500' + FROM mc_userdb.customer_login a + LEFT JOIN + ( + SELECT customer_id,SUM(order_money) AS total_money + FROM mc_orderdb.order_master + GROUP BY customer_id + ) b + ON a.customer_id = b.customer_id \ No newline at end of file