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. IME输入法编程心得

     原文链接: IME输入法编程心得 posted @ 2012-11-30 00:42 from [FreedomShe] 自然语言处理的输入法作业成品没有做出来,但不想再在蛋疼的Win32上面耗 ...

  2. 【shell】笔记|去重复行|删除匹配行|反选删除|反向显示|加减乘除

    目录 配置 bash Shell忽略命令大小写 |按"上"键显示该命令的历史 shell 删除匹配行 shell 获取结果中的第n列,第n行 grep过滤 shell 注释块 Li ...

  3. Win32输入法编程技术的分析研究

    作者:新疆大学 巴力登 陆莲芳 [摘要]本文论述了Win32输入法编程技术的基本原理.技术要点及其实现的方法. 并分析研究了基于IMM-IME结构的输入法的构成.接口.设计方法与核心技术问题.  [关 ...

  4. java 两个数组去重复数据_Java实现数组去除重复数据的方法详解

    本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现, ...

  5. 数据去重复_字典应用实例(每行每列都要去重复值)

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务.支持我,也为自己加油! 前面两节课中的去重复,不论是单张表里的去重复还是多张表里的去重 ...

  6. 带着灵魂去旅行的骑者-重新认识自我

    2013年,多么一个让我终身难忘的年份,这年的经历改变了我太多太多太多,这一年我一直在寻找属于自己的那份自由和梦想. 2013年,有过悲伤,有过欢乐,有过兴奋,五味杂陈我都一一品尝过了,我也渐渐的在这 ...

  7. python去重复记录_Python列表去重复项的N种方法(实例代码)

    说明 Python语言中列表(List)与其他语言的数组(Array)类似,是一种有序的集合数据结构,Python List可支持各种数据类型,长度也可动态调整,与JS中的数组或Java ArrayL ...

  8. 带着canvas去流浪系列之二 绘制折线图

    [摘要] 用canvasAPI实现echarts简易图表 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvasAPI绘制 ...

  9. 带张光盘去装机(转)

    带张光盘去装机(转)[@more@] 我在电脑城打工时,几乎每天都会遇到用户电脑出现问题需要修复或重装系统的事.由于经常要去客户的公司或家里进行故障处理,因此我心想:如果有一张附带常用工具的万能装机盘 ...

  10. oracle 查的数据去重复数据,Oracle查询和过滤重复数据

    对数据库某些意外情况,引起的重复数据,如何处理呢? ----------------查重复: select * from satisfaction_survey s where s.as_side = ...

最新文章

  1. SqlParameter的用法
  2. centos/linux扩容Swap分区
  3. Forefront Security For Exchange文件传送限制测试
  4. Objetive-C枚举位移操作Swift枚举位移操作
  5. 巨头的转身 ARM阵营开始烧英特尔的后院
  6. 关于如何实现程序一天只启动一次的想法(C++实现)
  7. windows系统中创建线程常用哪几个函数,有什么区别?
  8. 安装SQL Server 2012 RTM遇到 Microsoft NET Framework 4 0 install
  9. 2022-03-09:我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字。 你来猜我选了哪个数字。 如果你猜到正确的数字,就会 赢得游戏 。 如果你猜错了,那么我会告诉你,我选
  10. 中英文状态的符号转换
  11. 八月十一上午笔记钊哥第一节课
  12. android 讯飞语音 提示组件未安装,迅雷看看提示“未安装组件”原因及其解决方法...
  13. JavaScript实现图片瀑布流
  14. 程序员需知的 58 个网站,墙裂推荐!
  15. CCSv5.3的安装
  16. 字节和unicode
  17. Java书签 #用Java生成指定位数不重复随机数
  18. LoadRunner 11压测时碰到错误Error: missing newline in E:\xx\RCV.dat
  19. python entry高度_Python2.7.3 Tkinter Entry(文本框) 说明
  20. 国产精品《仙剑奇侠传5》将至 浅析国内游戏引擎发展史

热门文章

  1. 使用百度统计分析你的网站访问数据
  2. NodeJs或者命令行爬取网络教程并生成PDF文件,以阮一峰JavaScript教程和ES6教程为例 ...
  3. Vue折腾记 - (2)写一个不大靠谱的面包屑组件
  4. SaltStack Runners
  5. DataType--数值类型
  6. SQL高级---SQL ALTER TABLE 语句
  7. 公开SNS社区即时找朋友链的源代码和部署方案(续六)
  8. DataGrid中DropDownList触发SelectedIndexChanged事件并修改DataGrid行值(转载)
  9. oracle表中多个字段同时和另一个表中关联解决办法
  10. for in和for of的区别(转)