MySQL:在一列中选择多列和总和

Posted

技术标签:

【中文标题】MySQL:在一列中选择多列和总和【英文标题】:MySQL: Select multiple columns and total sum in one column 【发布时间】:2013-07-17 07:31:46 【问题描述】:

我有一张这样的桌子:

-----------+------|
product_id |price |
-----------+------|
  1        + 5    |
-----------+------|
  2        + 15   |
-----------+------|
  3        + 25   |
-----------+------|

我需要这样的输出:

-----------+------|
product_id |sum   |
-----------+------|
  1        + 45   |
-----------+------|
  2        + 45   |
-----------+------|
  3        + 45   |
-----------+------|

我当前的查询:

 SELECT  product_id, (SELECT SUM(price) FROM tableName) `sum` FROM  tableName.

是否可以在不使用 2 SELECT 查询或 GROUP_CONCAT 的情况下做到这一点? 请帮忙。

提前致谢!

注意:我的表中有数千行,并且更多条件(包括其他表数据)将添加到此查询中。

【问题讨论】:

向我们展示您现在的查询是什么以及您尝试将总和放入您的数组中。 问题已更新。请检查。 【参考方案1】:

只需使用 group by。

 SELECT 
product_id, (SELECT SUM(price) FROM tableName) `sum` 
FROM  
tableName 
group by .

【讨论】:

【参考方案2】:

使用这样的查询:

SELECT *, sum(price) AS sum FROM table WHERE condition = value

【讨论】:

这将只返回一行。【参考方案3】:
SELECT product_id , sum(price) AS sum FROM table WHERE condition = value

尽量不要在 select 语句中使用子查询。

【讨论】:

这将只返回一行。【参考方案4】:

你可以试试这个代码

select product_id, (select sum(price) from PRODUCTS) as sum FROM products

【讨论】:

你能在不使用 2 个选择查询的情况下产生相同的输出吗? 感谢您的回复!

以上是关于MySQL:在一列中选择多列和总和的主要内容,如果未能解决你的问题,请参考以下文章

如何在一列中获得不同的多列行

SQL根据一列中的最大值从多列中选择不同的行

在一列中选择该值未在另一列中出现 5 次的值

调整相对于 2 列的选择以在一列中返回最大值以用于另一列中的重复条目

如何选择每组的前两行并在一列中计算它们之间的差异?

MySql怎样获取一列中最大值