循環(huán)次數未知,單純的sql實現(xiàn)不了,用函數遞歸可以
成都創(chuàng)新互聯(lián)公司是一家集網站建設,嘉祥企業(yè)網站建設,嘉祥品牌網站建設,網站定制,嘉祥網站建設報價,網絡營銷,網絡優(yōu)化,嘉祥網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。
function test(m){
n=select y from tab where x=m
if(n!=0){
test(n)
}else{
echo m
}
}
test(1)
$total=0; //預設變量,用于存放累加結果
$sql="查詢語句";
$sql=mysql_query($sql);
while($as=mysql_fetch_array($sql)){
$total=$total+$as[0];
}
還有一種辦法更好,假如你要累加的字段名為 price, 則:
$sql="select sum(price) as total from 表名 where 條件";
$sql=mysql_query($sql);
$as=mysql_fetch_array($sql);
$as['total']..... //這里就是你想要的累加結果,直接讓 mysql 做了,php里你就省去循環(huán)取值,估計效率好些。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數據表,而isamchk適用于ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行說明。當發(fā)現(xiàn)某個數據表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關于myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數據庫(表)
delimiter $$// 定義結束符為 $$
drop procedure if exists wk; // 刪除 已有的 存儲過程
create procedure wk()// 創(chuàng)建新的存儲過程
begin
declare i int;// 變量聲明
set i = 1;
while i 11 do // 循環(huán)體
insert into user_profile (uid) values (i);
set i = i +1;
end while;
end $$ // 結束定義語句
// 調用
delimiter ;// 先把結束符 回復為;
call wk();
delimter : mysql 默認的 delimiter是; 告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執(zhí)行了。
用遞歸吧,不過我不會用MySQL的語法,應該跟SQL?server差不多吧
1.錄入基礎數據
2.執(zhí)行語句與結果
delimiter $$
mysql
mysql CREATE PROCEDURE myProc() //創(chuàng)建while循環(huán)的存儲過程 if分支語句示例
- BEGIN
-
- DECLARE i int;
- SET i=1;
- loop1: WHILE i=10 DO
- IF MOD(i,2)0 THEN /*Even number - try again*/
- SELECT CONCAT(i," is an odd number");
- END IF;
- SET i=i+1;
- END WHILE loop1;
- END$$
Query OK, 0 rows affected (0.00 sec)
這種也可以