错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
我正在处理jsp代码,数据库连接有问题。我的数据库中有两个表,错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException,mysql,jsp,jdbc,Mysql,Jsp,Jdbc,我正在处理jsp代码,数据库连接有问题。我的数据库中有两个表,ANN和SEC,其中SEC\u ID是主键和SEC表中的自动递增,以及ANN表中的外键。我想在代码中使用此查询 (SELECT DATE, MESSAGE FROM ANN WHERE ANN.SEC_ID = SEC.SEC_ID;) 但是当我运行我的程序时,我有 此错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 问题在于如何连接表
ANN
和SEC
,其中SEC\u ID
是主键
和SEC
表中的自动递增
,以及ANN
表中的外键
。我想在代码中使用此查询
(SELECT
DATE,
MESSAGE
FROM ANN
WHERE ANN.SEC_ID = SEC.SEC_ID;)
但是当我运行我的程序时,我有
此错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
问题在于如何连接表。您可以使用以下选项:
SELECT
A.DATE, # Assuming both DATE and MESSAGE are in ANN table
A.MESSAGE
FROM
ANN AS A
JOIN SEC AS S ON (A.SEC_ID = S.SEC_ID);
(为了提高性能和可读性,我使用了alias)
请记住,您还可以执行以下操作:
SELECT
A.DATE, # Assuming both DATE and MESSAGE are in ANN table
A.MESSAGE
FROM
ANN AS A, SEC AS S
WHERE A.SEC_ID = S.SEC_ID;
但这是记忆不足。从数据库检索的行数为:
ANN中的行数*秒中的行数
这显然不是你想要的。如果每个表中有几千行,那么即使您从MySQL中也会得到
OutOfMemoryError
,问题在于分号“;”的位置
看看这个:
(SELECT
DATE,
MESSAGE
FROM ANN
WHERE ANN.SEC_ID = SEC.SEC_ID) ;
您尚未将ANN加入SEC
选择日期,来自ANN的消息,SEC,其中ANN.SEC_ID=SEC.SEC_ID
除了查询中括号的奇怪位置外,它要么不完整(您没有发布完整的代码),要么查询本身缺少的部分就是问题的原因)