com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知列';C3714552';在';其中第'条;
我不知道为什么我会收到这个错误消息…正如@Brad所指出的,您的主要问题是在com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知列';C3714552';在';其中第'条;,mysql,sql,Mysql,Sql,我不知道为什么我会收到这个错误消息…正如@Brad所指出的,您的主要问题是在`symptom`.`cui`=“+sintomas.pop()+”)中使用了混淆的引号应该是:`symptom`.`cui`='+sintomas.pop()+') 为什么会这样?根据(大多数关系数据库管理系统(包括SQL Server、Oracle、Postgres、MySQL等)所遵循的SQL语言的正式行业标准的旧版本),单引号和双引号用于不同的目的 双引号用于标识符,包括列名和表名,如“症状”。“cui” 在do
`symptom`.`cui`=“+sintomas.pop()+”)中使用了混淆的引号代码>应该是:`symptom`.`cui`='+sintomas.pop()+')代码>
为什么会这样?根据(大多数关系数据库管理系统(包括SQL Server、Oracle、Postgres、MySQL等)所遵循的SQL语言的正式行业标准的旧版本),单引号和双引号用于不同的目的
双引号用于标识符,包括列名和表名,如“症状”。“cui”
在doc第5.2节和第5.2节中,以下是分隔标识符的函数定义:
::=
以下是该类型的几种常见用途:
- 根据5.2语法规则,双引号允许空格
2),但显式包含的字符除外
在和允许的情况下
s在s和s中,
除a、a或a外,a不得
包括一个角色或其他角色。
- 与常规标识符相比,双引号具有区分大小写的能力:
13)A和A是等效的
如果
用等号替换的小写字母-
借出大写字母)和的(所有出现的
替换为,所有出现的替换为),视为
重复指定一个
SQL_文本的设计与实现-
对大小写敏感的已定义排序规则,进行同等比较
根据第8.2款中的比较规则,“”。
但是,一些RDBMS有自己的特殊字符、空格转义符号,这些符号不是ANSI标准。例如,SQL Server可以使用方括号[…]
;MySQL可以使用backticks`…`
单引号用于在char、varchar、text数据类型列(如'C3714552'
)中括起字符串文本。您的错误消息会被引发,因为您使用了双引号,并且MySQL引擎正在查找一个列标识符,因为您将该值用双引号括起来
在doc的5.3中,以下是字符串文字的定义(不存在双引号):
::=
[ ]
[ ... ]
[ { ... [ ... ] }... ]
根据5.3-语法规则:
1)在or中,顺序为:
...
... ...
等价于序列
... ...
尽管如此,MySQL提供了各种非ANSI语言,它们可能会对字符串文本使用双引号。但可能是后端API,如JDBC或ODBC,驱动程序默认为ANSI标准。我猜sintomas包含字符串,您需要在查询中用引号分隔。sintomas.pop()是否等于该值?你可能需要在它周围加上单引号是的,就是这样!干杯,伙计!!!
Statement st1 = conn.createStatement();
ResultSet rs2 = st1.executeQuery("
SELECT cui_2
FROM diagnostico.disease_has_symptom, diagnostico.symptom
WHERE(
`symptom`.`cui` = `disease_has_symptom`.`cui_2` AND
`symptom`.`cui` = " + sintomas.pop() + ");
");