[英]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.