OpenOffice.org Base中SQL简单删除命令执行报错求助
解决OpenOffice.org Base中DELETE语句的"Column not found"错误
我刚学SQL的时候也踩过一模一样的引号坑,别慌,这个问题超容易解决!
问题根源
你写的SQL语句里,把要匹配的字符串值E001用了双引号"E001",但在OpenOffice.org Base里,双引号是用来标识数据库对象(比如列名、表名)的,所以系统直接把E001当成了一个列名来找,自然就报“Column not found: E001”的错误了。
至于你在在线编辑器里能成功,是因为不同数据库对引号的规则有差异——有些数据库(比如MySQL)在特定模式下允许用双引号表示字符串,但Base严格遵循SQL标准,对单双引号的用途做了明确区分:
- 双引号:用于表名、列名这类标识符(你已经正确用它包裹了
Employees和EmployeeID) - 单引号:用于字符串常量值
修正后的SQL代码
只需要把"E001"改成单引号包裹的'E001'就可以正常执行了:
DELETE FROM "Employees" WHERE "EmployeeID" = 'E001';
给新手的小提醒
刚学SQL记牢这个引号规则能少走很多弯路:
- 引用表/列名时用双引号(如果名字里没有空格或特殊字符,其实可以不用,但用了也不会出错)
- 写字符串常量值时必须用单引号
内容的提问来源于stack exchange,提问作者thundercrypt




