2016-02-28 30 views
3

我有一個SQL查詢:SQL 2左連接在一個查詢與數

SELECT table1.column1, table2.column2, table1.column2 
FROM table1 LEFT JOIN table2 (ON table1.column1=table2.column2) 

我想要做的就是添加一個左連接表中,但也留下來算加入數據,如:

SELECT table1.column1, table2.column2, table1.column2, COUNT(table3.column1) 
FROM table1 LEFT JOIN table2 ON table1.column1=table2.column2 
LEFT JOIN table3 ON table1.column1=table3.column1 

該代碼似乎不起作用,有什麼可能是錯誤的?

+0

「似乎不工作」不是一個有效的問題描述。你有錯誤嗎?不正確的結果?還有別的嗎? MySQL和SQL Server是兩種不同的產品(具有一些非常不同的行爲),你實際上有哪些?由於我們正在進行聚合,因此我們還需要知道行的分佈(因爲'COUNT(...)'可能會返回不正確的結果)。數據是什麼樣的? –

回答

2

count是一個聚合函數 - 您不能將它與沒有group by子句的單行函數混合使用。解決此問題的方法是加入一個子查詢,而不是直接在table3和應用group by有:

SELECT table1.column1, table2.column2, table1.column2, cnt 
FROM  table1 
LEFT JOIN table2 ON table1.column1 = table2.column2 
LEFT JOIN (SELECT column1, COUNT(*) AS cnt 
      FROM  table3 
      GROUP BY column1) table3 ON table1.column1=table3.column1 
+1

謝謝!另一件事學到了。 –