2013-04-08 64 views
0

我有這樣的一個表:刪除,如果狀態列中遇到

id, senderNumber, blacklist 
----------------------------- 
1 0835636326 Y 
2 0373562343 Y 
3 0273646833 Y 

,我想自動刪除,如果在另一個表中新插入的行由上述使用bash腳本

上senderNumber列什麼

我已經使用這個腳本:

BLOCKLIST="$(mysql -uroot -pabcde smsd -N -s -r -e "SELECT senderNumber FROM blacklist WHERE senderBlock='Y'" | tr '\n' ' ')" 
mysql -uroot -pabcde smsd -e "DELETE FROM inbox WHERE senderNumber = '$BLOCKLIST'" 

這種輸出:

sh -x /etc/autodelete.sh 
+ tr \n 
+ mysql -uroot -pabcde smsd -N -s -r -e SELECT senderNumber FROM blacklist WHERE senderBlock='Y' 
+ BLOCKLIST=083808034690 08164853500 
+ mysql -uroot -pabcde smsd -e DELETE FROM inbox WHERE senderNumber = '083808034690 08164853500 ' 

但沒有運氣。任何幫助將非常感激。

+0

LIKE不需要'=' – 2013-04-08 07:53:08

+0

而查詢不需要LIKE。 – 2013-04-08 07:53:47

回答

0

試試這個

mysql -uroot -pabcde smsd -e "DELETE FROM inbox WHERE senderNumber like =".$BLOCKLIST 
+0

謝謝,但那不起作用 – rizha 2013-04-08 08:24:05

0

您不能只是在列表中的膠粘刪除senderNumber多項紀錄。事實上,你可以在一個查詢中刪除這些記錄:

DELETE FROM inbox LEFT JOIN blacklist USING (senderNumber) WHERE blacklist.senderBlock='Y' 

(注意,這是未經測試)

另一種方式來做到這一點,是使用IN

DELETE FROM inbox WHERE senderNumber IN ('083808034690','08164853500') 

但你必須找到一種方法來添加逗號。

+1

對不起,錯誤的帖子。我已經編輯了這個問題。謝謝 – rizha 2013-04-08 07:58:04

+0

我只需要刪除一條記錄,但條件必須從senderNumber列內部滿足。是的,你是對的,使用IN。 – rizha 2013-04-08 08:14:55