2013-09-30 93 views
1

我以爲我知道如何做一個簡單的外連接,但似乎我錯了。我是MySQL新手,但我確實擁有Oracle經驗。MySQL外部連接給予最大連接大小錯誤

我有兩個表,我想要查詢。第一個表是一個成員表。第二個表稱爲購買。採購包含會員購買的每件商品的一行。

成員表包含多於2700行。購買表格包含少於130,000行。

我最終希望得到一個所有成員的清單,並記錄他們獨特的物品購買次數。這裏是我的查詢:

select mem.member_id 
     ,mem.name 
     ,count(distinct pur.item_id) 
from members mem 
    left outer join purchases pur on mem.member_id = pur.member_id 

我收到以下錯誤,當我執行查詢:

1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay 

最大連接大小當前設置爲700萬美元。

我在這裏不理解什麼?

回答

0

您的查詢看起來不錯,但如果這顯然是失敗的,你可以嘗試以下

select 
     m.member_id, 
     m.`name`, 
     coalesce(cnts.UniqItems, 0) as UniqItems 
    from 
     members m 
     left join (select p.member_id, count(distinct p.item_id) as UniqItems 
         from purchases p 
         group by p.member_id) cnts 
      on m.member_id = cnts.member_id 

寫作之後,我覺得這個問題可能是該列的保留字「NAME」,應可能只需要用tic標記來區分列與保留字。

+0

謝謝。我嘗試在tic標記中包裝「名稱」列,但這沒有幫助。我也試圖取出計數,只選擇member_id和名稱,但仍然有錯誤。 您提供的查詢工作。我不能說我完全明白爲什麼。感謝您的幫助! – Lacarno