2014-11-24 50 views
1

參照實例表結構:GROUP BY Informix中(11.5)

NR1 | NR2 | PRENAME | LASTNAME 

如果我查詢這個表的所有4場和分組it's在mysql中第一個2場(NR1,NR2), 我能做些什麼像這樣:

SELECT NR1,NR2,PRENAME,LASTNAME FROM tbl GROUP BY NR1,NR1 

但是這不能在informix中工作。

INFORMIX ERROR: the column (PRENAME) must be in the group by list 

在谷歌閱讀一些主題後,它是一個「Informix的功能」,所有選定的列必須是在分組列表。 但是,如果我會這樣做,結果不是那個結果,我希望有。 如果我使用

DISTINCT 

代替GROUP BY結果是相似的假的,因爲我不能把DISTINCT功能只列1和2

這樣:我怎樣才能做一個「MYSQL GROUP BY」功能?

+0

http://stackoverflow.com/questions/15699456/informix-group-by-alias – 2014-11-24 15:00:44

+1

那麼,你的'組by'在MySQL中是錯誤的開始。 – 2014-11-24 15:06:41

+0

@AvinashBabu答案看起來不錯,但我怎樣才能選擇多個列。如果我增強第一個SQL(從郵政) - > GROUP BY + MISSING列錯誤。如果我將它添加到SubSelect(「之後」)沒有任何反應 – ChristianNRW 2014-11-24 15:33:36

回答

1

您的原始語法適用於一個數據庫 - MySQL。並且,該數據庫表示非彙總列的結果來自未定的行。所以,等效查詢只使用MIN()MAX()

SELECT NR1, NR2, MIN(PRENAME), MIN(LASTNAME) 
FROM tbl 
GROUP BY NR1, NR1; 

我的猜測是,你想從只有一行的任意值。我傾向於將它們串聯:

SELECT NR1, NR2, MIN(PRENAME || ' ' || LASTNAME) 
FROM tbl 
GROUP BY NR1, NR1;