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 '

但没有运气。任何帮助将不胜感激。

4

2 回答 2

0

您不能仅通过粘贴senderNumber列表来删除许多记录。事实上,您可以在一次查询中删除这些记录:

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

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

另一种方法是使用IN

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

但是您必须找到一种添加逗号的方法。

于 2013-04-08T07:54:16.527 回答
0

尝试这个

  mysql -uroot -pabcde smsd -e "DELETE FROM inbox WHERE senderNumber like =".$BLOCKLIST
于 2013-04-08T07:52:46.743 回答