首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL / MySQL / PostGres -更新价格时返回所有列和记录

SQL / MySQL / PostGres -更新价格时返回所有列和记录
EN

Stack Overflow用户
提问于 2018-04-10 18:41:42
回答 1查看 39关注 0票数 0

我有一个表格,上面有数千个拍卖物品的条目。一些拍卖品立即出售,其他拍卖品在随后的拍卖中以较低的价格重新上市。每个拍卖项目条目对于其在数据库中的条目具有唯一的id (因此,当重新输入项目时,它获得新的列表id),但也具有不随重新列表而改变的唯一项目标识符。

此外,还有拍卖物品的类别,以及特定的品牌和类型(例如,“家具”类别有许多列表,制造商“la-z- well”是其中一个品牌,然后“recliner”是一个更具体的类型)。

重新列出的项目将使用新的唯一id和新价格重新输入到数据库中,但唯一的项目标识符保持不变,所有其他列/属性保持不变。我可以通过以下命令找到所有价格发生变化的商品:

代码语言:javascript
运行
复制
SELECT category, unique_item_identifier FROM auction_listings WHERE category='furniture' GROUP BY unique_item_identifier HAVING COUNT(*)>1; 

这个查询的问题是它只返回唯一的标识符、类别和计数,但是我不能查看价格变化。此外,如果我试图更具体地了解查询,例如

代码语言:javascript
运行
复制
SELECT category, brand, unique_item_identifier FROM auction_listings WHERE category='furniture' GROUP BY unique_item_identifier HAVING COUNT(*)>1;

这是因为:“SELECT list的表达式#2不在GROUP BY子句中,并且包含在函数上不依赖于GROUP BY子句中的列的非聚合列;这与sql_mode=only_full_group_by不兼容”

我想看看所有有价格变化的洛杉矶男孩,然后看看那些价格变化是什么。我还希望能够运行一个查询,显示所有有价格变化的la-z-boys (不管类型),所以我还希望能够选择类别,品牌,类型,其中brand='la-z-boy‘(然后显示所有有价格变化的la-z-boys,输出包括不同的价格)。

我正在寻找这样的输出:

代码语言:javascript
运行
复制
unique-1 la-z-boy recliner price: $1000 entered on 1/1/2018
unique-1 la-z-boy recliner price: $800 entered on 2/1/2018
unique-2 la-z-boy recliner price: $1,200 entered on 1/1/2018
unique-2 la-z-boy recliner price: $1,050 entered on 2/1/2018
unique-2 la-z-boy recliner price: $950 entered on 3/1/2018
unique-3 la-z-boy couch price: $1,200 entered on 1/1/2018
unique-3 la-z-boy couch price: $1,000 entered on 2/1/2018

提前感谢-我已经在这里阅读了几十个与这个特定请求非常接近的答案,但无法明确地找到这一点,也无法从其他答案中找出如何做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2018-04-10 19:39:32

您还没有提供样本数据,但希望以下内容足以演示原理

代码语言:javascript
运行
复制
+------+--------+----------+-------------+--------+
| id   | userID | industry | companyName | salary |
+------+--------+----------+-------------+--------+
|    1 |      2 |       55 | abc company |     55 |
|    2 |      2 |       55 | xyz company |     75 |
|    3 |      2 |       56 | 123 company |     85 |
|    4 |      3 |       12 | cjf company |     25 |
|    5 |      4 |       52 | xxx company |     77 |
|    6 |      4 |       65 | yyy company |     99 |
+------+--------+----------+-------------+--------+
6 rows in set (0.00 sec)

如果在一个子查询中,我们识别出那些有超过一次工资变化的人,我们可以连接回去获取详细信息

代码语言:javascript
运行
复制
select userid,companyname,salary
from uex
where userid in(
select userid
from uex
group by userid having count(distinct salary) > 1
);
+--------+-------------+--------+
| userid | companyname | salary |
+--------+-------------+--------+
|      2 | abc company |     55 |
|      2 | xyz company |     75 |
|      2 | 123 company |     85 |
|      4 | xxx company |     77 |
|      4 | yyy company |     99 |
+--------+-------------+--------+
5 rows in set (0.02 sec)

如果要选择特定用户,请在子查询中包括where子句

代码语言:javascript
运行
复制
select userid,companyname,salary
from uex
where userid in(
select userid
from uex
where userid = 2
group by userid having count(distinct salary) > 1
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49751575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档