mysql中的异常错误“;删除“;查询
我在shell脚本中运行了以下mysql代码:mysql中的异常错误“;删除“;查询,mysql,bash,sql-delete,Mysql,Bash,Sql Delete,我在shell脚本中运行了以下mysql代码: mysql -u "$DB_USER" -p"$DB_PASSWD" "$DB_SOURCE" << MYSQLEOF DELETE FROM list_subscriber_events WHERE subscriberid IN (SELECT subscriberid FROM (SELECT subscriberid FROM `list_subscriber_events` WHERE subscriberid NOT I
mysql -u "$DB_USER" -p"$DB_PASSWD" "$DB_SOURCE" << MYSQLEOF
DELETE FROM list_subscriber_events WHERE subscriberid IN
(SELECT subscriberid FROM
(SELECT subscriberid FROM `list_subscriber_events` WHERE subscriberid NOT IN
(SELECT subscriberid FROM list_subscribers)) AS c);
MYSQLEOF
我花了几个小时尝试各种变化——我似乎无法解决它。任何帮助都将不胜感激-我可能遗漏了一些明显的内容。尝试删除反勾字符
FROM `list_subscriber_events` WHERE
^ ^
在shell命令行的上下文中,这些反勾号表示需要运行的内容,并替换其中的返回
我怀疑shell正在解释这些回执,并试图执行list\u subscriber\u events
,这可能会返回一个错误。结果是它被替换为一个空字符串。。。结果语句是
... FROM WHERE ...
如果必须包含反勾号,则可能在反勾号前面加上反斜杠字符将对其进行转义
跟进
另一方面,您似乎需要更多的内联视图。如果子查询返回空值,不在
中,则可能会出现“gotcha”。(可能您保证subscriberid
在list\u subscribers
中不为NULL。或者,您确实希望我们在该子查询返回NULL值时得到的行为。)
看起来是一个简单得多的查询,使用反连接模式将实现您想要的结果。。。要从list\u subscriber\u事件中删除subscriberid
值未出现在list\u subscriber\u事件中的行
DELETE e.*
FROM list_subscriber_events e
LEFT
JOIN list_subscribers l
ON l.subscriberid = d.subscriberid
WHERE l.subscriberid IS NULL
嗯,您的第二个SELECT subscriberid FROM语句上似乎有一个注释标记),这会影响到什么吗?我已经重试了,这就解决了-谢谢。我肯定我把它们脱下来测试过了!
DELETE e.*
FROM list_subscriber_events e
LEFT
JOIN list_subscribers l
ON l.subscriberid = d.subscriberid
WHERE l.subscriberid IS NULL