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 :(得分: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')
但你必须找到一种方法来添加逗号。