这种SQL查询语法有什么问题?

问题描述

DELETE 
  FROM 014_terms 
 WHERE term_id IN (SELECT term_id 
                     FROM 014_term_taxonomy 
                    WHERE taxonomy LIKE 'pa_%');

我遇到错误

#1064-您的sql语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以获取正确的语法,以在“ WHERE term_id IN(从014_term_taxonomy选择WHERE分类法,在第1行使用......

注意:我使用的是纯文本编辑器,空格只是普通空格。

我正在使用PHPMyAdmin,并且尝试了将表名用单引号引起来的不同查询变体,如下所示:

sql query:

DELETE FROM '014_terms' WHERE term_id IN (SELECT term_id FROM '014_term_taxonomy' WHERE taxonomy LIKE 'pa_%')

MysqL said:

#1064 - You have an error in your sql Syntax; check the manual that corresponds to your MariaDB server version for the right Syntax to use near ''014_terms' WHERE term_id IN (SELECT term_id FROM '014_term_taxonomy' WHERE t...' at line 1

还有这个

sql query:

DELETE FROM '014_terms' WHERE term_id IN (SELECT term_id FROM 014_term_taxonomy WHERE taxonomy LIKE 'pa_%')

MysqL said:

#1064 - You have an error in your sql Syntax; check the manual that corresponds to your MariaDB server version for the right Syntax to use near ''014_terms' WHERE term_id IN (SELECT term_id FROM 014_term_taxonomy WHERE tax...' at line 1

解决方法

最终的解决方案是使用反引号包装以这样的数字前缀开头的表名。感谢@PaulT。

DELETE FROM `014_terms` WHERE term_id IN (SELECT term_id FROM `014_term_taxonomy` WHERE taxonomy LIKE 'pa_%');

感谢所有提供反馈的人!

:-)

,

您所遇到的问题似乎是表名以数字/数字开头。

尝试更新您的sql_mode

SET @@session.sql_mode=ANSI_QUOTES;

完成上述更改后,尝试执行查询。

DELETE
FROM 014_terms
WHERE term_id IN
    (SELECT term_id
     FROM 014_term_taxonomy
     WHERE taxonomy LIKE 'pa_%');