paip.输入法编程---带ord gudin去重复-
paip.输入法编程---带ord gudin去重复-
作者Attilax , EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
--------查询重复(不同ORD)
SELECT
hezi,
atian,
gudin,
count(id) AS num
FROM
gaopinzi
WHERE
LENGTH(atian) > 0 and ( del is null or del=0) and lang='chinese'
GROUP BY
hezi,
atian
HAVING
num > 1
-----------加入临时表.
DELETE from tmp_tsiku;
insert tmp_tsiku(hezi,atian,gudin,lang)
SELECT
hezi,
atian,
gudin,
count(id) AS num
FROM
gaopinzi
WHERE
LENGTH(atian) > 0 and ( del is null or del=0) and lang='chinese'
GROUP BY
hezi,
atian
HAVING
num > 1
;
select * from tmp_tsiku
去重复存储过程 conf_del
----------------------
原理如下:
for( tmp_tsiku )
if(getTsityao_count(hezi,py))
{
baolyeu_id= get_top1(hezi,py);
del_other(hezi,py,baolyeu_id);
}
BEGIN
#Routine body goes here...
declare tmpName varchar(200) default '' ;
declare var_ati varchar(200) default '' ;
declare havgudin int;
declare gundi_id int;
declare rownum int;
declare tsityao_count int;
declare baolyeu_id int;
declare tmpint int;
DECLARE isRecordNotFound int;
declare cur1 CURSOR FOR select hezi,atian from tmp_tsiku where 1=1 ;
declare continue handler for not found set isRecordNotFound = 1;
-- Oracle的PL/SQL的指针有个隐性变量%notfound,
-- Mysql是通过一个Error handler的声明来进行判断的,
-- declare continue handler for Not found (do some action);
-- 在Mysql里当游标遍历溢出时,会出现一个预定义的NOT FOUND的Error,
-- 我们处理这个Error并定义一个continue的handler就可以了
-- 下面一句不能没有,否则将会进不了while循环
set isRecordNotFound = 0;
set rownum=1;
/*开游标*/
#set tmpName=; set var_ati
OPEN cur1;
/*游标向下走一步*/
FETCH cur1 INTO tmpName,var_ati;
/* 循环体 这很明显 把游标查询出的 name 都加起并用 ; 号隔开 */
WHILE ( isRecordNotFound = 0 ) DO
set tsityao_count=getTsityao_count(tmpName,var_ati);
if tsityao_count>1 THEN
select havgudin,rownum ;
set
baolyeu_id= get_top1(tmpName,var_ati);
select gundi_id,rownum ;
set
tmpint= del_other(tmpName,var_ati,baolyeu_id);
end if;
set rownum=rownum+1;
/*yao jya jeig select ,beri zweiheu yg result b show chwlai.. */
select 'the end';
/*游标向下走一步*/
FETCH cur1 INTO tmpName,var_ati;
END WHILE;
CLOSE cur1;
END
-------getTsityao_count---------
BEGIN
#Routine body goes here...
DECLARE gudinid int ;
set @gudinid= (
SELECT
COUNT(*)
FROM
gaopinzi
WHERE
(del IS NULL OR del = 0)
AND lang = 'chinese'
AND hezi = hezi
AND atian =py
);
RETURN @gudinid;
END
--------get_top1-----------
BEGIN
#Routine body goes here...
DECLARE gudinid int ;
set @gudinid= ( select id from gaopinzi where lang='chinese' and HEZI=hezix and ATIAN=py
and (del is null or del=0)
order by gudin desc,ord,id
limit 1
);
RETURN @gudinid;
END
---------del_other---------
BEGIN
#Routine body goes here...
#select SQL_NO_CACHE del_no_gudin ('一','y',3192) c1
declare tmpName INT;
/*
update gaopinzi set del=1,deltime=now(),dely='del no-gudin'
*/
#SET NAMES 'utf8';
insert tmp(id,hezi,py)
select id,hezi,atian from gaopinzi
where lang='chinese' and HEZI=hezix and atian=py
and ( del is null or del=0)
and id!=baolyeuid
;
RETURN tmpName;
END
检查得到的tmp是否OK.
-----------
触发器日志
---------
以便进行误删除恢复..
CREATE TRIGGER `deladdtime` AFTER UPDATE ON `gaopinzi` FOR EACH ROW begin
insert logx(idop,eventx,timex,demo,hezi,pyold,pynew)values( old.id,'update rec',now(),'',old.hezi,old.atian,new.atian);
end;
删除虫复
-----------
update gaopinzi set del=1,deltime=now(),dely='del no-gudin'
where id in (select id from tmp)
----------恢复误删除的记录
select * from logx WHERE id>=6 and id<=10
(select idop from logx WHERE id>=6 and id<=10);
select * from gaopinzi where id in (13083,15319,15736,16030,137815);
UPDATE gaopinzi set del=0,deltime=now(),dely='hweif' where id in (13083,15319,15736,16030,137815);
select * from gaopinzi where id=137815
------------------已下为测试SQL--------------
------------------已下为测试SQL--------------
select * from gaopinzi where lang='chinese' and HEZI='七' and ( del is null or del=0) order by id
limit 7;
select * from gaopinzi where lang='chinese' and HEZI='一' and ( del is null or del=0)
exec QUERY_chonf_nosame_ord
-----查询是否有重复的记录...
SELECT
COUNT(*)
FROM
gaopinzi
WHERE
LENGTH(hezi) = 3
AND (del IS NULL OR del = 0)
AND lang = 'chinese'
AND hezi = '针'
AND atian = 'jenjs'
ORDER BY
gudin DESC,
ord
-------得到要保留的ID
SELECT
*
FROM
gaopinzi
WHERE
LENGTH(hezi) = 3
AND (del IS NULL OR del = 0)
AND lang = 'chinese'
AND hezi = '针'
AND atian = 'jenjs'
ORDER BY
gudin DESC,
ord
LIMIT 1
------删除其他记录.
update gaopinzi set del=1 where
LENGTH(hezi) = 3
AND (del IS NULL OR del = 0)
AND lang = 'chinese'
AND hezi = '针'
AND atian = 'jenjs'
and id!=@top1
select * from gaopinzi
where lang='chinese' and HEZI='一' and atian='y'
and ( del is null or del=0)
and gudin=0 and id!=3192
=============
update gaopinzi set del=1 ,dely='test' where id=7106 and atian='cy'
update gaopinzi set del=1 ,dely='test' where id=7106 and atian='cy'
select * from gaopinzi where id=7106
select * from tmp
select hezi,atian from gaopinzi where lang='chinese' and (del is null or del=0) and LENGTH(hezi)=3
and ord=99 order by hezi
select * from gaopinzi where lang='chinese' and (del is null or del=0) and LENGTH(hezi)=3 and ord=99
order by hezi
select havgudin('针','jen')
select havgudin('一','y')
paip.输入法编程---带ord gudin去重复-的更多相关文章
- paip.输入法编程----删除双字词简拼
paip.输入法编程----删除双字词简拼 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/at ...
- paip.输入法编程---增加码表类型
paip.输入法编程---增加码表类型 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attil ...
- paip输入法编程之生活用高频字,以及汉字分级
paip输入法编程之生活用高频字 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...
- paip.输入法编程----一级汉字1000个
paip.输入法编程----一级汉字1000个.txt 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn. ...
- paip.输入法编程---输入法ATIaN历史记录 c823
paip.输入法编程---输入法ATIaN历史记录 c823 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...
- paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例
paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例 #---目标 1. en vs enPHati 2.en vs enPhAtiSmp 3.cn vs ...
- paip.输入法编程---词库多意义条目分割 python实现.
paip.输入法编程---词库多意义条目分割 python实现. ==========子标题 python mysql 数据库操作 多字符分隔,字符串分割 字符列表循环 作者 老哇的爪子 Attil ...
- paip.输入法编程---词频顺序order by py
paip.输入法编程---词频顺序order by py 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- paip.输入法编程---智能动态上屏码儿长调整--.txt
paip.输入法编程---智能动态上屏码儿长调整--.txt 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...
随机推荐
- 阿里云ECS安全改造:改用AWS EC2私钥方式登录
阿里云ECS有多烂,用过AWS的人都知道,ECS有什么问题呢,简单总结一下: 1)ubuntu居然root直接访问 2)端口全开 3)WEB控制台无法定义安全组及关闭端口 4)云盾黑洞 的确用起来很糟 ...
- ASP.NET-FineUI开发实践-1
用.Net开发3年,主要接触资产管理,生产流程,质量追溯,.Net在这方面还是很靠谱的.2月低接触FineUI,那时版本是3.0+,第一眼让我想起了ExtJs,其实就是用.Net封装了ExtJs让AS ...
- 设计模式之—简单工厂模式<Simple Factory Pattern >
简单工厂模式结构图: 简单工厂模式以简单的加减乘除运算为例: 运算符类(Operation): namespace CalcTest.Simple_Factory_patterns { class O ...
- JAVAEE学习
首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它 ...
- requirejs和r.js的心得
requirejs的GitHub:requirejs r.js的GitHub:r.js grunt-contrib-requirejs的GitHub:grunt-contrib-requirejs r ...
- Topshelf
Topshelf允许开发者创建一个简单的控制台程序,将其安装为一个window服务. 这样做的原因很简单:方便调试. 使用命令行工具可以很方面的安装Topshelf创建的服务. server.exe ...
- 增加Android模拟器的内存
1,在window中,打开'C:\Users\Administrator\.android\avd\4.4.2.avd\config.ini'文件(我的是win7,xp的貌似不是'Users',是'D ...
- SQL Server 分组后取Top N
SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿 ...
- 如何通过Request.ServerVariables["HTTP_USER_AGENT"]获取客户端操作系统信息
http://www.useragentstring.com/pages/api.php
- 武汉科技大学ACM:1007: 文本编辑器
Problem Description YB打算写一个功能强大的文本编辑器,并取一个炫酷拉风,高端优雅的名字,比如“YB牌文本编辑器”之类的.既然功能强大,那肯定得有个查找功能吧.但是他在完成这个功能 ...