如果列中满足条件,则删除

时间:2013-04-08 07:50:46

标签: php mysql bash

我有一张这样的桌子:

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 '

但没有运气。任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

只需粘贴列表中的senderNumber,就无法删除大量记录。实际上,您可以在一个查询中删除这些记录:

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

(请注意,这是未经测试的)

另一种方法是使用IN

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

但你必须找到一种方法来添加逗号。