【问题标题】:Error with MySQL 5 using JOIN and UNIONMySQL 5 使用 JOIN 和 UNION 出错
【发布时间】: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,将最后一个条件小写并不会改变任何东西。

标签: mysql join union


【解决方案1】:

我认为问题在于LEFT JOINed 表周围的括号:

  • LEFT JOIN (btourn AS tourn) 触发错误
  • LEFT JOIN btourn AS tourn 被接受

你可以在这里试试(我不得不将联合包装到一个选择中以避免 sqlfiddle 的错误): http://sqlfiddle.com/#!2/d4885/11

SELECT bteamres.rank AS `rank`
FROM      bteamres
LEFT JOIN btourn AS tourn ON bteamres.tourncode=tourn.tourncode
WHERE bteamres.nofivb1=100427

UNION 

SELECT bteamres.rank AS `rank`
FROM      bteamres
LEFT JOIN btourn AS tourn ON bteamres.tourncode=tourn.tourncode
WHERE bteamres.nofivb2=100427

【讨论】:

  • 一个选择就可以使用(btourn AS tourn)版本,这很有趣。
  • 那一定是大名鼎鼎的MySQL“品质”。
  • @biziclop - 你指的是 sql fiddle 的什么错误?这个版本(没有包装的选择)似乎和你的版本一样工作:sqlfiddle.com/#!2/d4885/25
  • 嗨,杰克,我刚刚注意到 sqlfiddle 似乎不喜欢将选择包裹在括号中的联合:sqlfiddle.com/#!2/d41d8/988
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2019-12-09
  • 2013-10-07
相关资源
最近更新 更多