2 u010468993 u010468993 于 2016.03.28 18:29 提问

MYSQL连续左连接两张表报错

SQL语句如下:
SELECT * FROM
channel AS a JOIN floors b ON a.ifloorid = b.id
join floors c on a.ofloorid = c.id
连续连接同一张表。
这个SQL语句直接放在mysql终端执行是没有问题的。
但是当用jdbc运行的时候。提示错误:
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near ''floors' b ON a.ifloorid = b.id JOIN 'floors' c ON a???ofloorid = c.id' at line 1

数据库版本是5.5,mysql的jar版本是5.1.6

3个回答

Java__Coder
Java__Coder   2016.03.28 19:16

a???ofloorid = c.id....

u010468993
u010468993 我也看到这个了。但是这就是一个点。英文状态下的,所以不知道究竟是哪的问题
一年多之前 回复
yue1123
yue1123   2016.03.28 20:38

mysql终端没问题那说明不是sql格式有问题,你把jar版本换成5.5或以上的试下再试下。可能是5.1.6的编码不兼容高版本的mysql
还有这里的join默认不是左链接。而是内链接

u010468993
u010468993 回复yue1123: 不是关键字的问题,我之前也试过加,也不起作用。但是今天早上还是上面那个语句突然就正确了。
一年多之前 回复
yue1123
yue1123 回复ahuwangqun: 表名或都字段名是否有包含关键字? http://www.cnblogs.com/zzxbest/archive/2011/09/22/2185029.html
一年多之前 回复
u010468993
u010468993 从低到高版本的都换了不起作用、请问你能不能把这个语句改成子查询的。
一年多之前 回复
zhangjs712
zhangjs712   2016.03.29 08:57

SELECT * FROM
channel a ,floors b,floors c where a.ifloorid = b.id and a.ofloorid = c.id 你的SQL与这样写的效果是一样的。你试试看会不会报错

zhangjs712
zhangjs712 回复ahuwangqun: 搞清楚原因了没,否则以后也是个风险。
一年多之前 回复
u010468993
u010468993 还是上面那句话,今天能跑了。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!