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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP