2013年11月27日 星期三

bash script runs manually , but fails on crontab

今天碰到一個問題是
寫的shell script 手動run的時候  是正常可以執行的

這個script 主要是呼叫mysql 執行一些資料庫的動作

查了一下發現是一些環境變數的問題
在crontab不認得一些變數--> path裡面所設定的mysql變數

因此先在環境下

下  echo $PATH   

可以知道PATH的變數設定

之後再script增加 

export PATH="上面得到的設定"

如此就可正常執行


參考
http://stackoverflow.com/questions/14612444/bash-script-runs-manually-but-fails-on-crontab

2013年11月25日 星期一

sql exist vs in

這邊比較一下sql exist 和in的差別


Select * from T1 where x in ( select y from T2 )

LIKE:

select *

from t1, ( select distinct y from t2 ) t2 >

where t1.x = t2.y;

如果使用EXISTS,如同上述的查詢結果
select * from t1 where exists ( select null from t2 where y = x ) 

LIKE: 

for x in ( select * from t1 ) 
loop 
if ( exists ( select null from t2 where y = x.x ) 
then 
OUTPUT THE RECORD 
end if 
end loop 


因此當子查詢比主查詢小的時候使用in  ,反之則使用exist
外大內小=IN,外小內大=EXISTS








參考了http://tw.knowledge.yahoo.com/question/question?qid=1306041509015