首页 > 数据库 >这些年写过的花式sql - 第一句 删除重复无效的记录

这些年写过的花式sql - 第一句 删除重复无效的记录

时间:2023-08-01 18:12:13浏览次数:29  
标签:username 删除 记录 第一句 num sql 无效 花式

这些年写过的花式sql - 第一句 删除重复无效的记录

写好复杂sql可以减少代码量,经过写这些年的后台统计,我学着像写代码一样的设计和尝试sql。现整理如下:
本来想一次性写完的,不过那写起来和看起来都太累了。还是分解一下吧。
如果有不对的或者可以优化的地方,欢迎指正。

第一句

需求:

表中有字段 用户名 username,状态 status(1,有效,-1无效)。因为以前的一些疏忽,导致部分username的记录超过1个而且有的状态是1(为1 的最多有一个),有些是-1。现在准备把 同时有1和-1的username记录整理一下,只保留状态为1的那条记录。

//删除重复无效的username对应的记录
delete 
from `child_user` 
where 
    username in 
        (SELECT username from ( SELECT username,count(*) as num FROM `child_user` group by username having num >1) a)
    and status !=1

解析:
  • 分析删除条件:【条件一】status !=1 ,且 【条件二】该username对应的记录不止一条。
    对于条件二,可以分解:
    1. 查询 username 不止一条的记录 ( SELECT username,count(*) as num FROM child_user group by username having num >1)
    2. 把这个结果 起个表别名 a
    3. 提取其中的username列 即为 不止一条记录的username集合
  • 知识点deletegroupin中间结果集作表的转换: (sql)表别名。如果这个 临时结果需要被 “from”,一定要 括起来并加上别名。如果不是被from,目前看来是不要加的。这里加了甚至会出错。

标签:username,删除,记录,第一句,num,sql,无效,花式
From: https://www.cnblogs.com/xjcyue/p/17598697.html

相关文章

  • PHP+JSP+MYSQL+APACHE+RESIN虚拟主机配置
     在LINUX平台下全部配置完毕并完全整和通过测试成功需要软件如下resin:http://www.caucho.com/jdk:http://java.sun.com/apache:http://www.apache.orgmysql:http://www.mysql.comphp:http://www.php.netjdbc:http://mmmysql.sourceforge.net/本人所用的软件版本如......
  • 常用sql
    本月的所有日期。找一个id有1~31的表SELECTDATE_FORMAT(date_add(last_day(curdate()),INTERVAL(cast(help_topic_idASsignedINTEGER)-DAY(last_day(curdate())))+1DAY),'%Y-%m-%d')DAYFROMmysql.help_topicWHEREhelp_topic_id<DAY(last_day(cu......
  • Could not find server 'server name' in sys.servers. SQL Server 2014
    Couldnotfindserver'servername'insys.servers.SQLServer2014  Atfirstcheckoutthatyourlinkedserverisinthelistbythisqueryselectnamefromsys.serversIfitnotexiststhentrytoaddtothelinkedserverEXECsp_addl......
  • SQL注入
    前言  本文只作为技术探讨,请不要用于非法目的或侵犯他人隐私。漏洞原理  sql注入指的是web应用程序没有对用户输入的数据进行合法化的判断或过滤,前端传入的参数攻击者可以进行控制。攻击者可以通过构造恶意slq代码注入到应用程序的数据库中查询,从而执行一些未授权的数据库......
  • web渗透测试(8):SQL注入
    SQL注入是最常见的(web)漏洞之一。所有SQL注入练习,在这里找到,使用MySQL作为后端。当SQL查询中包含SQL注入时,缺少用户控制输入的编码/转义。 根据信息在查询中的添加方式,您需要不同的东西来破坏语法。有三种不同的方法可以在SQL语句中回显信息:使用引号:单引号或双引号。使用反......
  • PostgreSQL-PITR 增量备份与恢复
    Point-in-TimeRecovery(PITR)基于时间点的备份(恢复)。归档对于PITR(增量备份与恢复)至关重要,如果归档不一致,会产生各种各样的问题。以下的测试截图中,我将归档清零,重新生成,再做相关PITR的操作。这里是简单的操作过程,详情查看相关的官方文档说明 26.3.ContinuousArchivingandPoi......
  • mysql安装及使用语句
    http://www.mysql.com/downloads/ubuntu安装sqlite http://blog.chinaunix.net/uid-20672803-id-3049747.htmlhttp://wenku.baidu.com/link?url=dl9lRAhX82e9Lg5EnQB7l1fWtdBueLoiyKuzxPhDiOxxuxPQpORaD-_jxFajOkpQfw-BEG1VYwAZBxbAYzJK5QA_8grUtGJU41Wyo43wGzihttp://www.yiiba......
  • ubuntu安装mysql数据库
    http://www.2cto.com/database/201401/273423.htmlhttp://www.linuxidc.com/Linux/2013-01/78716.htm......
  • 《为研发同学定制的MySQL面试指南》-- 连载中
    一、给研发同学看的面试指南1、MySQL的修仙之路,图文谈谈如何学MySQL、如何进阶!2、数据库面经,常见的面试题....3、谈谈MySQL中基数是什么?4、聊聊什么是慢查?如何监控?如何排查?5、对NotNull字段插入Null值有啥现象?6、能谈谈year、date、datetime、time、timestamp的区别吗?7、你有没有......
  • MySQL的修仙者之旅,不来看看你的修为如何吗?
    目录因为我个人比较喜欢看修仙类的小说,所以本文的主体部分借用修仙者的修为等级,将学习旅程划分成:练气、筑基、结丹、元婴、化神、飞升六个段位,你可以看下你大概在哪个段位上哦!本文目录:我为什么要写这篇文章都这么卷了,是时候好好学MySQL了!勾勒脑图练气期筑基期结丹期元婴期化神期飞......