mysql求2個或以上字段為NULL的記錄求解方法

這篇文章主要介紹了mysql 求解求2個或以上字段為mysql的記錄,需要的朋友可以參考下

核心代碼

/*--------------------------------  求2個或以上字段為NULL?的記錄  t1:  id,?id1,?id2,?id3,?id4,?id5,?id6  在t1?表中有個字段;  其中id是主鍵;  怎樣打印其中個字段或以上為NULL?的記錄id?  另外,存儲過程中怎么實現按順序一條一條讀取記錄最方便?  注:主鍵id?是沒有順序的,也可能是字符串的;  -----------------------------------------*/  drop?table?if?exists?t1;  create?table?t1(id?int,id1?int,id2?int,id3?int,id4?int,id5?int,id6?int);  insert?t1?select  1,1,1,1,1,null,null?union?all?select?  2,null,null,null,1,2,3?union?all?select?  3,1,2,3,4,5,6?union?all?select?  4,1,2,3,4,5,null?union?all?select?  5,null,3,4,null,null,null?;  delimiter?$$  create?procedure?usp_c_null()  begin?  declare?n_c?int;  declare?idd?int;  declare?cur?cursor?for?  select?id,case?char_length(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')))  -char_length(replace(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')),'@','')?)  ?when?6?then?6?when?5?then?5?when?4?then?4??when?3?then?3?when?2?then?2?when?1?then?1?else?0?end?as?c?from?t1;  declare?exit?HANDLER?for?not?found?close?cur?;  open?cur;  repeat?  fetch?cur?into?idd,n_c;  if(n_c>=2)?then  select?*?from?t1?where?id=idd;  end?if?;  until?0?end?repeat;  close?cur;  end?;  $$  delimiter?;  /*  +------+------+------+------+------+------+------+  |?id??|?id1?|?id2?|?id3?|?id4?|?id5?|?id6?|  +------+------+------+------+------+------+------+  |??1?|??1?|??1?|??1?|??1?|?NULL?|?NULL?|  +------+------+------+------+------+------+------+  1?row?in?set?(0.10?sec)  +------+------+------+------+------+------+------+  |?id??|?id1?|?id2?|?id3?|?id4?|?id5?|?id6?|  +------+------+------+------+------+------+------+  |??2?|?NULL?|?NULL?|?NULL?|??1?|??2?|??3?|  +------+------+------+------+------+------+------+  1?row?in?set?(0.14?sec)  +------+------+------+------+------+------+------+  |?id??|?id1?|?id2?|?id3?|?id4?|?id5?|?id6?|  +------+------+------+------+------+------+------+  |??5?|?NULL?|??3?|??4?|?NULL?|?NULL?|?NULL?|  +------+------+------+------+------+------+------+  1?row?in?set?(0.17?sec)  */

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享