簡體   English   中英

MySQL左連接子查詢失敗

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM