`
yo8237233
  • 浏览: 62600 次
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql 去重,跨表更新,跨表删除

阅读更多
一、去重
1.查询出重复的记录
CREATE TABLE push_log_full_2013_10_30_tmp
SELECT * FROM `push_log_full`
WHERE time BETWEEN FROM_DAYS(TO_DAYS(NOW()) - 1) AND FROM_DAYS(TO_DAYS(NOW()))
AND (imsi, andriodid, time) IN (
SELECT imsi, andriodid, time FROM `push_log_full`
WHERE time BETWEEN FROM_DAYS(TO_DAYS(NOW()) - 1) AND FROM_DAYS(TO_DAYS(NOW()))
GROUP BY imsi, andriodid, time
HAVING COUNT(*) > 1)

将重复的记录查出来放到一张临时表里面去。

2
删除push_log_full表中的重复数据。
3
将临时表的数据重新导入到push_log_full中。

二、跨表更新
法一:
UPDATE product p, productPrice pp 
SET pp.price = pp.price * 0.8 
WHERE p.productId = pp.productId 
AND p.dateCreated < '2004-01-01' 


法二:
UPDATE product p 
INNER JOIN productPrice pp 
ON p.productId = pp.productId 
SET pp.price = pp.price * 0.8 
WHERE p.dateCreated < '2004-01-01' 


法三多表更新:
UPDATE product p 
INNER JOIN productPrice pp 
ON p.productId = pp.productId 
SET pp.price = pp.price * 0.8, 
p.dateUpdate = CURDATE() 
WHERE p.dateCreated < '2004-01-01' 


三、跨表删除
在Mysql4.0之后,mysql开始支持跨表delete。
Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录。
假定我们有两张表:Product表和ProductPrice表。前者存在Product的基本信息,后者存在Product的价格。
第一种跨表删除的方式是不用join,在delete时指定用半角逗号分隔多个表来删除,如下sql语句:
DELETE p.*, pp.* 
FROM product p, productPrice pp 
WHERE p.productId = pp.productId 
AND p.created < '2004-01-01' 


第二种跨表删除的方式是使用inner join在join中指定两表之间的关联关系,如下sql语句:

DELETE p.*, pp.* 
FROM product p 
INNER JOIN productPrice pp 
ON p.productId = pp.productId 
WHERE p.created < '2004-01-01' 


跨表删除也可以使用left join,例如我们要删除所有在ProductPrice表中没有记录的Product表记录。如下sql语句:

DELETE p.* 
FROM product p 
LEFT JOIN productPrice pp 
ON p.productId = pp.productId 
WHERE pp.productId is null 
分享到:
评论

相关推荐

    计算机二级《MySQL数据库程序设计》知识点总结.pdf

    MySQL数据库程序设计涵盖了多个方面,包含了对MySQL数据库的基本操作,以及数据查询、表操作、索引和视图的管理,还涉及到了SQL语句中的一些高级用法。以下是对这些知识点的详细解释: 1. 数据操作: - 检索:通过...

    mysqlcheatsheet

    本文将深入解析一份由Jason Milkins创建的MySQL快捷命令参考表,涵盖SQL查询、条件、插入、删除、更新、浏览、数据库与表的创建/删除/修改等核心操作,为读者提供一个全面的MySQL技能指南。 #### 查询(Select) 1...

    2021-2022计算机二级等级考试试题及答案No.16201.docx

    9. MySQL中,INSERT触发器可以在新数据插入时操作,可以使用NEW表来访问新插入的数据。 10. 变量分为实例变量和局部变量。实例变量是类的成员,静态变量用static声明,局部变量在方法执行时创建,且必须在使用前...

    2021-2022计算机二级等级考试试题及答案No.16352.docx

    每次只能删除单个表中的记录:虽然大多数情况下确实如此,但通过联表查询等高级技术也可以实现跨表删除。 - C. 删除过的记录只能用“撤销”命令恢复:这通常是错误的,一旦记录被删除,通常无法直接通过“撤销”...

    基于Python语言的微博...络数据可视化系统设计与应用-王蔷.pdf

    基于Python语言的微博网络数据可视化系统设计与应用主要关注的是如何利用Python及其相关技术,如Flask、Bootstrap、JQuery、Echarts和MySQL,来构建一个能够爬取、分析并可视化微博数据的系统。该系统旨在满足不同...

    IPCount.zip

    .NET Core是Microsoft开发的一个开源、跨平台的应用开发框架,用于构建Web应用、控制台应用和服务。它支持Windows、Linux和macOS操作系统,并且可以在多种不同的服务器和容器上运行。.NET Core的优点包括高性能、...

    基于flask实现的前端数据集收集平台.zip

    这种API风格使接口具有统一的资源表示和操作方式,例如GET用于获取资源,POST用于创建新资源,PUT用于更新资源,DELETE用于删除资源。 7. 安全性考虑: 在数据收集过程中,应考虑用户隐私保护和数据安全。Flask...

    阿里巴巴面试官手册.pdf

    - **应用**:快速排序、去重、查询等场景。 - **扩展**:布隆过滤器(Bloom Filter)作为BitMap的扩展,可以用于快速判断元素是否可能存在。 ### Bloom Filter - **概念**:一种空间效率极高的概率型数据结构,用于...

    备份软件项目主要参数.pdf

    8. **重复数据删除**:内嵌并行重删,支持横向扩展、跨环境去重、全局去重和广域网去重,还支持远程复制以实现数据级容灾。支持源端和目标端重删,即使DDB损坏,也不会影响数据恢复。 9. **自动日志备份**:对关键...

    UCenter Home 2.0 简体中文UTF8.zip

    以上软件除了web服务器软件有可能需要购买以外(如IIS是商业软件),其余均为跨平台的免费软件,推荐使用以上软件的最新稳定版本,不仅拥有更多的功能,而且通常已修复了已知老版本的安全漏洞。 您的MySQL数据库账号...

    UCenter Home 2.0 简体中文GBK.zip

    以上软件除了web服务器软件有可能需要购买以外(如IIS是商业软件),其余均为跨平台的免费软件,推荐使用以上软件的最新稳定版本,不仅拥有更多的功能,而且通常已修复了已知老版本的安全漏洞。 您的MySQL数据库账号...

    UCenter Home 2.0 繁体中文UTF8.zip

    以上软件除了web服务器软件有可能需要购买以外(如IIS是商业软件),其余均为跨平台的免费软件,推荐使用以上软件的最新稳定版本,不仅拥有更多的功能,而且通常已修复了已知老版本的安全漏洞。 您的MySQL数据库账号...

    Seafile项目经验分享.pptx

    Seafile的主要特点是其强大的资料库系统,它不仅是一个带有历史记录的去重文件系统,还允许用户创建个人资料库、群组资料库,甚至整个机构的资料库页面,以便于不同级别的文件管理和权限控制。此外,它还具有端到端...

    Oracle GoldenGate Veridata Documentation

    - Oracle GoldenGate提供了实时、低延迟的数据复制技术,能够捕获数据库的DML(插入、更新、删除)操作,并实时地应用到目标系统。 - 这种实时复制特性使得Veridata能够在不影响主业务的情况下,实现数据的即时...

    存储问题解决方案.doc

    - **高可用性**:大多数云服务提供商都提供跨区域的冗余存储选项,确保数据的高度可用性。 #### 二、块存储 **块存储**是一种直接与存储设备交互的方式,它为用户提供了一个类似本地硬盘的存储空间。这种类型的...

    updateSuggestKeywords

    在IT行业中,"updateSuggestKeywords"这个标题很可能与一种编程任务或功能有关,它涉及到自动更新或优化建议关键词的功能。这种功能常见于搜索引擎、推荐系统或者内容管理系统中,用于提高用户体验,提供更加准确和...

    thinkphp3.2离线文档

    - **数据删除**: 删除记录。 - **ActiveRecord**: 提供一套操作数据库的标准API。 - **字段映射**: 映射数据库字段到模型属性。 - **查询语言**: - **查询方式**: 不同类型的查询。 - **表达式查询**: 使用表达式...

    MenuJavaMicromercado:使用 Java 开发微型市场

    - **SQL查询**:插入、更新、删除和查询数据,构建合适的SQL语句。 7. **设计模式** - **单例模式**:确保数据库连接类或配置类的全局唯一性。 - **工厂模式**:创建商品对象,隐藏具体的创建过程。 - **观察者...

    bmaroney-notes:TodoList 应用程序

    TodoList应用中,每个任务可以被视为一个对象,拥有属性(如任务名称、描述、优先级、截止日期)和方法(如添加、删除、完成任务)。 2. **MVC(模型-视图-控制器)架构**:在Java Web应用中,TodoList可能采用MVC...

Global site tag (gtag.js) - Google Analytics