Database 板


LINE

※ 引述《ruby0104 (:))》之銘言: : ※ 引述《cpper (>:D>)》之銘言: : : 借用上面的表格請教一下以下的 SQL : : : SELECT *, COUNT(*) AS counts FROM table GROUP BY visit_date ; : : 在 MySQL 中這可以動作 @_@ , 可是在 PostgreSQL 中就不行 , 會被要求要把 id, : : name, visit_date 等欄位補充到 GROUP BY 後面。而且跑出來的結果就和 MySQL 不一 : : 樣了。 : : 請問若要使 PostgreSQL 跑出來結果和 MySQL 一樣的話 , 該怎麼做呢 ? : 我比較好奇的是 為什麼在MySQL里可以跑出來? : 在select子句裡面的 除了一些function 不是都應該出現在 Group by 里嗎? 對不起, 我昨天打錯了 m(_._)m 我重新打一次請大家幫忙看看, 我建了兩個表格叫 authors 和 books . select * from authors; 的結果如下: author_id | author_name | author_city -----------+-------------+------------- 1 | Alex | New York 2 | Ben | New York 3 | Cook | Taipei 4 | Clus | Taipei 5 | Class | Taipei 6 | Delta | Tokyo select * from books; 的結果如下: book_id | book_title | book_version | a_id ---------+------------+--------------+------ 1 | sql book | 2 | 1 2 | java book | 3 | 1 3 | c++ book | 4 | 3 4 | c# book | 4 | 3 select * from authors, books; 的結果如下: author_id | author_name | author_city | book_id | book_title | book_version | a_id -----------+-------------+-------------+---------+------------+--------------+------ 1 | Alex | New York | 1 | sql book | 2 | 1 1 | Alex | New York | 2 | java book | 3 | 1 1 | Alex | New York | 3 | c++ book | 4 | 3 1 | Alex | New York | 4 | c# book | 4 | 3 2 | Ben | New York | 1 | sql book | 2 | 1 2 | Ben | New York | 2 | java book | 3 | 1 2 | Ben | New York | 3 | c++ book | 4 | 3 2 | Ben | New York | 4 | c# book | 4 | 3 3 | Cook | Taipei | 1 | sql book | 2 | 1 3 | Cook | Taipei | 2 | java book | 3 | 1 3 | Cook | Taipei | 3 | c++ book | 4 | 3 3 | Cook | Taipei | 4 | c# book | 4 | 3 4 | Clus | Taipei | 1 | sql book | 2 | 1 4 | Clus | Taipei | 2 | java book | 3 | 1 4 | Clus | Taipei | 3 | c++ book | 4 | 3 4 | Clus | Taipei | 4 | c# book | 4 | 3 5 | Class | Taipei | 1 | sql book | 2 | 1 5 | Class | Taipei | 2 | java book | 3 | 1 5 | Class | Taipei | 3 | c++ book | 4 | 3 5 | Class | Taipei | 4 | c# book | 4 | 3 6 | Delta | Tokyo | 1 | sql book | 2 | 1 6 | Delta | Tokyo | 2 | java book | 3 | 1 6 | Delta | Tokyo | 3 | c++ book | 4 | 3 6 | Delta | Tokyo | 4 | c# book | 4 | 3 (24 筆資料列) 在 PostgreSQL 中, 下面這行指令會出錯 : select * from authors, books group by author_id; 錯誤訊息: column "authors.author_name" must appear in the GROUP BY clause or be used in an aggregate function 但是在 MySQL 中, 結果如下: mysql> select * from authors, books group by author_id; +-----------+-------------+-------------+---------+------------+--------------+------+ | author_id | author_name | author_city | book_id | book_title | book_version | a_id | +-----------+-------------+-------------+---------+------------+--------------+------+ | 1 | Alex | New York | 1 | sql book | 2 | 1 | | 2 | Ben | New York | 1 | sql book | 2 | 1 | | 3 | Cook | Taipei | 1 | sql book | 2 | 1 | | 4 | Clus | Taipei | 1 | sql book | 2 | 1 | | 5 | Class | Taipei | 1 | sql book | 2 | 1 | | 6 | Delta | Tokyo | 1 | sql book | 2 | 1 | +-----------+-------------+-------------+---------+------------+--------------+------+ 6 rows in set (0.00 sec) 接下來, 在 PostgreSQL 中, 下面這行指令會出錯: select *,count(*) from authors, books group by author_id; 錯誤訊息: column "authors.author_name" must appear in the GROUP BY clause or be used in an aggregate function 但是在 MySQL 中, 結果如下: mysql> select *,count(*) from authors, books group by author_id; +-----------+-------------+-------------+---------+------------+--------------+------+----------+ | author_id | author_name | author_city | book_id | book_title | book_version | a_id | count(*) | +-----------+-------------+-------------+---------+------------+--------------+------+----------+ | 1 | Alex | New York | 1 | sql book | 2 | 1 | 4 | | 2 | Ben | New York | 1 | sql book | 2 | 1 | 4 | | 3 | Cook | Taipei | 1 | sql book | 2 | 1 | 4 | | 4 | Clus | Taipei | 1 | sql book | 2 | 1 | 4 | | 5 | Class | Taipei | 1 | sql book | 2 | 1 | 4 | | 6 | Delta | Tokyo | 1 | sql book | 2 | 1 | 4 | +-----------+-------------+-------------+---------+------------+--------------+------+----------+ 6 rows in set (0.00 sec) 看了 MySQL 的結果知道他的結果大概怎麼出來的, 但是現在我想要讓那幾行指令也能 在 PostgreSql 中運作, 請問大家有什麼建議嗎? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.96.89.57
1F:推 Antzzz:我的建議是把不在group by裡的欄位從select中去掉… 08/28 12:11
2F:推 Antzzz:全部有四筆它卻只挑一筆出來,那一筆不就規則不明嗎? 08/28 12:17
3F:→ cpper:每個欄位都要select出來說,因為要完全轉換MySQL到PostgreSQL 08/28 13:18
4F:推 alpe:看你是要用 DISTINCT on 還是一個一個加到 group by 上 08/28 15:40







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP