[英]MySQL left join subquery fail
以下查询在MySQL 5.x中运行良好
SELECT
m_area.id, m_area.cn_areaName, m_area.de_areaName,
m_area.en_areaName,m_area.jp_areaName,t_shop.count
FROM
m_area left join
(
select t_shop.areaID, count(areaID) AS count
from t_shop
group by t_shop.areaID
) t_shop
on m_area.id = t_shop.areaID
但是,当我必须在具有相同数据库结构和数据的4.0.23 MySQL数据库中运行它时,它只会返回以下消息:
1064-您的SQL语法错误。 查看与您的MySQL服务器版本相对应的手册,以获取在'[
select t_shop.areaID, count(areaID) AS count from t_s
我尝试了很多次,但还是失败了。 在MySQL 4.x中不允许左联接子查询吗? 那意味着我必须用一个临时表来做?
提前致谢!
子查询在MySQL 4.0中并没有得到很好的支持:可以在 MySQL 4.1中使用子查询(至少以某种真实,有用的方式) -MySQL 4.0确实很老,现在...
例如,请参见MySQL手册的此页面: 12.2.8。 子查询语法 (引用,强调我的) :
从MySQL 4.1开始,支持SQL标准要求的所有子查询形式和操作,以及一些特定于MySQL的功能。
对于4.1之前的MySQL版本,有必要解决或避免使用子查询 。
在许多情况下,可以使用联接和其他方法成功重写子查询。 请参见第12.2.8.11节“将子查询重写为早期MySQL版本的联接” 。
我能想到的是添加的表名到您areaID表示在子查询或重命名保留字的东西count
到CNT。
SELECT m_area.id
, m_area.cn_areaName
, m_area.de_areaName
, m_area.en_areaName
,m_area.jp_areaName
,t_shop.cnt
FROM m_area
left join (
select t_shop.areaID
, count(t_shop.areaID) AS cnt
from t_shop
group by t_shop.areaID
) t_shop on m_area.id = t_shop.areaID
取出“,count(areaID)AS计数”
子查询中的多个列使连接混乱。
临时表应该可以正常工作....
玩得开心!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.