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去重复-的更多相关文章

  1. paip.输入法编程----删除双字词简拼

    paip.输入法编程----删除双字词简拼 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/at ...

  2. paip.输入法编程---增加码表类型

    paip.输入法编程---增加码表类型 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attil ...

  3. paip输入法编程之生活用高频字,以及汉字分级

    paip输入法编程之生活用高频字 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...

  4. paip.输入法编程----一级汉字1000个

    paip.输入法编程----一级汉字1000个.txt 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn. ...

  5. paip.输入法编程---输入法ATIaN历史记录 c823

    paip.输入法编程---输入法ATIaN历史记录 c823 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...

  6. paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例

    paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例 #---目标 1. en vs enPHati 2.en vs enPhAtiSmp 3.cn vs ...

  7. paip.输入法编程---词库多意义条目分割 python实现.

    paip.输入法编程---词库多意义条目分割 python实现. ==========子标题 python mysql 数据库操作 多字符分隔,字符串分割 字符列表循环  作者 老哇的爪子 Attil ...

  8. paip.输入法编程---词频顺序order by py

    paip.输入法编程---词频顺序order by py 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn ...

  9. paip.输入法编程---智能动态上屏码儿长调整--.txt

    paip.输入法编程---智能动态上屏码儿长调整--.txt 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csd ...

随机推荐

  1. javascript內容向上不間斷滾動

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Java 异常处理的误区和经验总结--转载

    本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验, ...

  3. 常用git命令整理

    花了一点时间来熟悉和整理git常用命令. 推荐的git学习资料:1.搜“Git Community Book 中文版.pdf”,git社区书,内容全面且简明扼要,第一推荐2.搜“Git权威指南.pdf ...

  4. Java字符串的10大热点问题,你都懂吗?

    转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符 ...

  5. String[]和ArrayList和LinkedList区别

    String[]和ArrayList和LinkedList区别 参考文档如下: http://www.blogjava.net/flysky19/articles/92775.html http:// ...

  6. Java中如何判断当前环境是大端字节顺序还是小端字节顺序

    Java非字节类型的基本类型,除了布尔型都是由组合在一起的几个字节组成的.这些数据类 型及其大小总结在表 2-1 中. 表:基本数据类型及其大小 数据类型 大小(以字节表示) Byte 1 Char ...

  7. PHP MySQLi

    PHP MySQLi 简介 PHP MySQLi = PHP MySQL Improved! MySQLi 函数允许您访问 MySQL 数据库服务器. 注释:MySQLi 扩展被设计用于 MySQL ...

  8. regular expression (php函数)

    1. 正则表达式是一种字符串搜索和匹配的工具 2. php中常用正则表达式函数 preg_match($pattern, $subject) preg_match_all($pattern, $sub ...

  9. Ubuntu 12.04更换显示器后显示“显示不支援”,只能进恢复模式工作

    以前用的一台14寸液晶,换成17寸后,进入系统显示器上“显示不支援”  .仔细观查,电脑硬盘自检能显示后,后面都是黑屏. 解决过程. 因为grub 启动菜单不能显示.盲按方向键,发现菜单里的其它项目可 ...

  10. PHP学习系列(1)——字符串处理函数(4)

    16.hebrevc() 函数把希伯来文本从右至左的流转换为左至右的流.它也会把新行 (\n) 转换为 <br />.只有 224 至 251 之间的 ASCII 字符,以及标点符号受到影 ...