Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 1 decade ago

問SQL語法.關於GROUP BY

我下了這個語法..

SELECT A.COL1, A.COL2, B.COL3 FROM TABLEA A LEFT JOIN TABLE B B ON A.COL1=B.COL1 GROUP BY A.COL1 <==這個在MYSQL 是可以通過的. 也是我想要的結果, 但是在DB2 就不能通過, 原因可以說DB2 對SQL 比較嚴謹, 所SELECT 出來的欄位必須在GROUP BY 後面也有, 也那並不是我想要的.

請問有人知道有甚麼變通的辦法嗎?

Update:

謝謝 LinuxUser 的回覆

當GROUP BY A.COL1 後, 我是希望他回傳A.COL2 , B.COL3 傳回其中一筆給我就OK.

2 Answers

Rating
  • Anonymous
    1 decade ago
    Best Answer

    就觀念來說,你GROUP了A.COL1,那A.COL2,B.COL3可能不只一個,這是不能SELECT的因為SQL無法知道那個是要傳回如 A表各欄有COL1 COL2 1    2    1    3    B表各欄有COL1 COL31    4你SELECT後(沒有GROUP BY)則為A.COL1=B.COL1  A.COL2  B.COL31              2       41              3       4當你GROUP BY A.COL1以後,A.COL1只有一筆(1,被合一筆),A.COL2 B.COL3有二筆,那這SELECT你到底要它回傳什麼?所以你不能用這SQL以下的才是合理的SELECT A.COL1 count(A.COL2) count(B.COL3) FROM.......

    2005-07-30 21:02:42 補充:

    如果針對以上的說明你仍無法了解,請先用EXAMPLE來說明,並告訴我你想它會傳回什???

  • Anonymous
    1 decade ago

    謝謝你以上的說明, 我完全理解.

    因為理解, 才想問有沒有變通的辦法!!

    在MYSQL 他會回傳其中一筆, 好像都是第一筆, 但在DB2就不能, 讓我很煩惱!!^^, 雖然DB2的做法才算正確. 但確不是我想要

Still have questions? Get your answers by asking now.