2012-02-08 53 views
0

我有一個記錄表;按或選擇不同的Rails,ActiveRecord,Heroku和PostgreSQL

用戶:ID,SCREEN_NAME,鳴叫

我想通過SCREEN_NAME返回用戶和組的列表,以便有沒有重複的列表screen_names。

@users = User.all(:group => "screen_name") 

這個在使用MySQL時很好,但是當我推到使用PostgreSQL的Heroku時沒有問題。

如何使用PostgreSQL獲得類似的結果集?

似乎有很多這方面的帖子,但我無法弄清楚評論的答案。

+1

如果你實際上想通過postgres得到(誠實可怕)mysql的結果,請參閱http://stackoverflow.com/questions/1769361/postgresql-group-by-different-from-mysql'SELECT DISTINCT ON( a)a,b,c,d,e從表格ORDER BY a,b,c' – Will 2012-02-08 08:40:20

+0

謝謝Will。我嘗試了@users = User.all(:select =>「DISTINCT ON(screen_name)screen_name,tweet」但日誌顯示錯誤「ActiveRecord :: StatementInvalid(PGError:ERROR:列id_list.alias_0不存在」 – Lee 2012-02-08 12:28:16

回答

2

除非screen_name不是主鍵,否則應該在組語句中添加所有列或將其聚合。但它看起來像你不能聚合id或推文))

.group("id, screen_name, tweet") 

你也可以規範化你的數據庫。將屏幕名稱放到另一個表格中,您將可以輕鬆獲得所需的數據。

+1

我試過將所有字段添加到組中@users = User.all(:select =>「screen_name,tweet」,:group =>「screen_name,tweet」但不幸的是,似乎返回所有記錄(包括screen_name的重複項)。儘量避免正常化 – Lee 2012-02-08 12:44:22