SQL 语句不会在字段名称周围没有“`”的情况下运行

Posted

技术标签:

【中文标题】SQL 语句不会在字段名称周围没有“`”的情况下运行【英文标题】:SQL statement won't run without "`" around the field names 【发布时间】:2012-05-16 01:48:13 【问题描述】:

我正在运行一个应用程序,并且在我的一个 sql 表上,它不会运行查询,除非“`”字符在字段名称周围并且我不知道为什么需要这样做??

例如

INSERT INTO doc_elements (doc_pdf_id, element_type, class, id, order, create_timestamp) VALUES ('37', 'p', 'ft2', '0', '3', '1337130927')

不会起作用,但这会起作用:

INSERT INTO `doc_elements`(`doc_pdf_id`, `element_type`, `class`, `id`, `order`, `create_timestamp`) VALUES ('37', 'p', 'ft2', '0', '3', '1337130927')

它是数据库中唯一需要将“`”包裹在字段名周围才能给出正确 sql 语句的表。

我可以在另一个表中完美运行:

INSERT INTO doc_pdfs (act_id, upload_stamp) VALUES ('xxxxx12234', '1337130927')

相关表的表结构:

CREATE TABLE IF NOT EXISTS `doc_elements` (
`doc_elements_id` int(15) NOT NULL auto_increment,
`doc_pdf_id` int(11) NOT NULL,
`element_type` varchar(20) NOT NULL,
`class` varchar(100) default NULL,
`id` varchar(100) default NULL,
`order` int(11) NOT NULL,
`parent_element` int(15) default NULL,
`active` tinyint(1) NOT NULL default '1',
`create_timestamp` int(20) NOT NULL,
`sys_stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY  (`doc_elements_id`),
KEY `doc_pdf_id` (`doc_pdf_id`),
KEY `parent_element` (`parent_element`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

关于为什么会发生这种情况的任何想法?

【问题讨论】:

错误是什么?什么是 rdbms?可能是您使用关键字作为列名。您是否可以在创建时使用引号创建区分大小写的 id,如果您想查询小写(Oracle),则需要再次使用引号 【参考方案1】:

ORDERmysql 中的 reserved word。

【讨论】:

ORDER 是所有 SQL 方言中的保留字。 是的,现在可以了。感谢那。我知道这会很简单:)

以上是关于SQL 语句不会在字段名称周围没有“`”的情况下运行的主要内容,如果未能解决你的问题,请参考以下文章

求一条关于字段名称取值的SQL语句?

为啥mysql数据表新增字段或修改已有字段名称就不能写入数据?前台写入,数据表字段没有数值。

在excel中用SQL语句查询时选取所有字段时可以提取,选部分字段时出现查询无法运行或数据库表无法打开。

关于sql语句添加where条件问题,用java语句

SQL查询字段名

mysql语句 修改表某个字段的值为 另一个表的值!~求帮助!~急急!