【发布时间】:2012-06-26 13:45:25
【问题描述】:
我有许多 MySQL 语句在 MySQL 4 下运行,但不是在 MySQL 5 下运行。这些语句结合了 UNION 和 JOIN。
为了简化 MySQL 语句,我得出以下在 MySQL 4 下运行但不在 MySQL 5 下运行的语句:
SELECT
bteamres.rank AS `rank`
FROM
bteamres
LEFT OUTER JOIN (btourn AS tourn) ON (bteamres.tourncode=tourn.tourncode)
WHERE
(bteamres.nofivb1=100427)
UNION
SELECT
bteamres.rank AS `rank`
FROM
bteamres
LEFT OUTER JOIN (btourn AS tourn) ON (bteamres.tourncode=tourn.tourncode)
WHERE
(BTEAMRES.NOFIVB2=100427)
我收到的错误代码是:
[Err] 1064 - 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 'ON (bteamres.tourncode=tourn.tourncode)
WHERE
(BTEAMRES.NOFIVB2=100427)' at line 15
如果我删除连接,则请求在 MySQL 4 和 MySQL 5 上都可以正常工作。 我知道 MySQL 4 和 MySQL 5 之间存在一些语法差异,但是我看不出如何使这个语句起作用。
感谢您的帮助。 帕特里克
【问题讨论】:
-
尝试将
SELECTs 包裹到括号中:(SELECT ...) UNION ALL (SELECT ...)BTW,您不必将左连接的表名包裹到(),除非它更适合您:) -
您的括号都不是必需的。将它们全部删除以消除对 mysql 的误解。
-
改成全小写是否会产生同样的错误:
bteamres.nofivb2=100427? -
bizicop,将
SELECTs 放入括号并不能解决问题 -
ypercube,将最后一个条件小写并不会改变任何东西。