sql - Postgres : select all row with count of a field greater than 1

标签 sql postgresql

我有一个存储产品价格信息的表,该表看起来类似于,(不是主键)

no   name    price    date
1    paper   1.99     3-23
2    paper   2.99     5-25
3    paper   1.99     5-29
4    orange  4.56     4-23
5    apple   3.43     3-11

现在我想选择表中“名称”字段出现不止一次的所有行。基本上,我希望我的查询返回前三行。

我试过:

SELECT * FROM product_price_info GROUP BY name HAVING COUNT(*) > 1  

但我收到一条错误消息:

column "product_price_info.no" must appear in the GROUP BY clause or be used in an aggregate function

最佳答案

SELECT * 
FROM product_price_info 
WHERE name IN (SELECT name 
               FROM product_price_info 
               GROUP BY name HAVING COUNT(*) > 1)

关于sql - Postgres : select all row with count of a field greater than 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36358833/

相关文章:

sql - BC 日期在 postgreSQL 中是什么意思?

sql - 为什么 PostgreSQL 查询在第一个新连接后的第一个请求中比在后续请求中慢?

java - 有时数据不会插入到表中

mysql - 用于格式化 mysql 中名称的字符串替换

sql - 如何使用 sqlite fts3 执行全文搜索

sql - 如果存在则更新行,如果不存在则插入,此 SQL 查询如何工作?

sql - PostgreSQL 从二维数组中获取数组

java - 如何在 Java 中将 TemporalType.TIMESTAMP 转换为 Date()?

sql - 仅从 SQL Server 中的表中恢复前一天的数据

django - 停止 Django 将时间转换为 UTC