DROP TABLE IF EXISTS `tempTb`; CREATE TEMPORARY TABLE tempTb SELECT product_id,project_id,COUNT(*) AS num FROM product GROUP BY product_id, project_id HAVING num > 1 ORDER BY project_id; DROP TABLE IF EXISTS MaxTb; CREATE TEMPORARY TABLE MaxTb SELECT product_id,project_id,MAX(product_id) AS maxPdt FROM product SELECT MAX(product_id),project_id FROM product SELECT product.`product_id`,product.`activity_id`,product.`project_id` FROM tempTb LEFT JOIN product ON product.`product_id` = tempTb.product_id AND product.`project_id` = tempTb.project_id; DROP TABLE IF EXISTS maxTb; CREATE TEMPORARY TABLE maxTb SELECT product_id,project_id,MAX(product_id) AS maxPdt FROM product GROUP BY project_id; SELECT maxPdt FROM maxTb; SELECT a.product_id,a.project_id,a.activity_id,COUNT(*) AS 序号 FROM product AS a ,product AS b WHERE a.project_id=b.project_id AND a.product_id<=b.product_id AND a.`activity_id` >= b.`activity_id` GROUP BY a.project_id,a.`activity_id` DROP TABLE IF EXISTS product_temp; CREATE TEMPORARY TABLE product_temp SELECT project_id,activity_id,product_id,count(*) AS num FROM product GROUP BY product_id,project_id HAVING num > 1 ORDER BY project_id,activity_id; SELECT product.product_id,product.activity_id,product.project_id from product_temp LEFT JOIN product ON product_temp.project_id = product.project_id AND product_temp.product_id = product.product_id; -- 进行过滤查询,查询多余的去掉最小activity_id那条记录 select product_id,activity_id,project_id from product a where (a.product_id,a.project_id) in (select product_id,project_id from product group by product_id,project_id having count(*) > 1) and (product_id,project_id,activity_id) not in (select product_id,project_id,min(activity_id) from product group by product_id,project_id having count(*)>1) -- 排序操作 set @a1=''; set @b1=1; select project_id,activity_id, if(@a1='',@b1,if(@a1=project_id,@b1:=@b1+1,@b1:=1)), @a1:=project_id from product order by project_id,activity_id desc; --序号 set @a1=''; set @b1=1; select project_id,activity_id,product_id, if(@a1='',@b1,if(@a1=project_id,@b1:=@b1+1,@b1:=1)) AS nob, @a1:=project_id AS prj_id, (select MAX(product_id) from product GROUP BY @al) from product order by project_id,activity_id desc; -- 过滤掉重复的数据 set @a1=''; set @b1=1; select product_id,activity_id,project_id, if(@a1='',@b1,if(@a1=project_id,@b1:=@b1+1,@b1:=1)) AS nob, @a1:=project_id AS prj_id from ( select product_id,activity_id,project_id from product a where (a.product_id,a.project_id) in (select product_id,project_id from product group by product_id,project_id having count(*) > 1) and (product_id,project_id,activity_id) not in (select product_id,project_id,min(activity_id) from product group by product_id,project_id having count(*)>1) ) AS product_ta order by project_id,activity_id desc; -- 创建临时表,更新数据库 DROP TABLE IF EXISTS product1_temp; CREATE TABLE product1_temp SELECT * FROM product1; UPDATE product1 SET product1.product_id = (SELECT product1_temp.product_id-product1_temp.project_id FROM product1_temp WHERE product1.project_id = product1_temp.project_id AND product1.activity_id = product1_temp.activity_id); --将最大值融合进去 set @b1=1; select product_id,activity_id,project_id,maxPrd, if(@a1='',@b1,if(@a1=project_id,@b1:=@b1+1,@b1:=1)) AS nob, @a1:=project_id AS prj_id from ( select product_id,activity_id,a.project_id,maxPrdTb.maxPrd from product AS a LEFT JOIN (SELECT project_id,MAX(product_id) AS maxPrd FROM product GROUP BY project_id) AS maxPrdTb ON a.project_id = maxPrdTb.project_id where (a.product_id,a.project_id) in (select product.product_id,product.project_id from product group by product.product_id,product.project_id having count(*) > 1) and (a.product_id,a.project_id,a.activity_id) not in (select product.product_id,product.project_id,min(product.activity_id) from product group by product.product_id,product.project_id having count(*)>1) ) AS product_ta order by project_id,activity_id ASC; set @a1=''; set @b1=1; select product_id,activity_id,project_id,maxPrd, if(@a1='',@b1,if(@a1=project_id,@b1:=@b1+1,@b1:=1)) + maxPrd AS newPrdId, @a1:=project_id AS prj_id from ( select product_id,activity_id,a.project_id,maxPrdTb.maxPrd from product AS a LEFT JOIN (SELECT project_id,MAX(product_id) AS maxPrd FROM product GROUP BY project_id) AS maxPrdTb ON a.project_id = maxPrdTb.project_id where (a.product_id,a.project_id) in (select product.product_id,product.project_id from product group by product.product_id,product.project_id having count(*) > 1) and (a.product_id,a.project_id,a.activity_id) not in (select product.product_id,product.project_id,min(product.activity_id) from product group by product.product_id,product.project_id having count(*)>1) ) AS product_ta order by project_id,activity_id ASC;
进行整合查询
set @a1=''; set @b1=1; DROP TABLE IF EXISTS my_product; CREATE TEMPORARY TABLE my_product select product_id,activity_id,project_id,maxPrd, if(@a1='',@b1,if(@a1=project_id,@b1:=@b1+1,@b1:=1)) + maxPrd AS newPrdId, @a1:=project_id AS prj_id from ( select product_id,activity_id,a.project_id,maxPrdTb.maxPrd from product AS a LEFT JOIN (SELECT project_id,MAX(product_id) AS maxPrd FROM product GROUP BY project_id) AS maxPrdTb ON a.project_id = maxPrdTb.project_id where (a.product_id,a.project_id) in (select product.product_id,product.project_id from product group by product.product_id,product.project_id having count(*) > 1) and (a.product_id,a.project_id,a.activity_id) not in (select product.product_id,product.project_id,min(product.activity_id) from product group by product.product_id,product.project_id having count(*)>1) ) AS product_ta order by project_id,activity_id ASC; SELECT * FROM my_product;
以下是数据库的图片
#mysql中两张表数据的部分更新,用tb2的部分数据更新tb1 UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name
exists去重
SELECT * FROM 表 main WHERE NOT EXISTS ( SELECT * FROM 表 sub WHERE main.division = sub.division AND main.district > sub.district )
相关推荐
1.查找表中所有姓刘的职工的工号,姓名,部门,薪水 2.查找所有定单金额高于20000的所有客户编号 3.查找业务部或会计部的女员工的基本信息。 4.选取编号界于‘C0001’和‘C0004’的客户编号、客户名称、客户地址...
查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...
MySQL重复查询 文章目录MySQL重复查询1. 基本查询回顾2. 多表查询3. 自连接4. 子查询 1. 基本查询回顾 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J select * from EMP where (sal...
57 2.2 Button控件应用 58 实例053 在Button按钮中显示图标 58 2.3 ComboBox控件应用 59 实例054 将数据表中的字段添加到ComboBox控件 59 实例055 带查询功能的ComboBox控件 61 2.4 ...
• 按照商品采购表中的数值格式显示查询结果 • 提取指定单元格的公式表达式 • 根据立方体指定参数计算公式结果 • 提取固定字符间隔的零件规格号 第3篇 创建图表和图形 • 图表种类 • 柱形图 • 条形图 • 折线...
实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 76 实例061 格式化当前日期 77 实例...
41.利用“数据透视表”求各部门购买电脑的总数量 42.求排名前三的平均值 43.求指定日期为当月的第几周 44.统计除去重复产品后的个数 45.不更新外部源链接 46.按汉字笔划进行排序 47.快速为数值插入“货币”单位 48....
如下是一个简化的员工考勤应用E-R图,请在SQL Server中创建名为YQKG的数据库,包括两个数据文件,一个日志文件,文件名按SQL Server对象命名规范定义,数据文件按10%的比例增长,数据库定义完成后输入如下样本数据。...
实例071 在ListView控件中对数据排序或统计 92 实例072 在ListView控件中绘制底纹 93 实例073 在列表视图中拖动视图项 94 实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7...