Mysql 如何按组选择列中的一个重复值

Mysql 如何按组选择列中的一个重复值,mysql,phpmyadmin,Mysql,Phpmyadmin,我有一张桌子: 我正在尝试生成一个如下所示的列(包含计算结果) 我尝试了这个查询,因为它给出了一个错误 SELECT Name, SUM(Amount) AS TAmnt, ProductPrice-SUM(Amount) AS OutB FROM t1 GROUP BY Name; 我也试过,但结果似乎不是我想要的 SELECT Name,SUM(Amount) AS TAmnt, SUM(ProductPrice)-SUM(Amount) AS OutB FROM t1 GR

我有一张桌子:

我正在尝试生成一个如下所示的列(包含计算结果)

我尝试了这个查询,因为它给出了一个错误

SELECT Name, SUM(Amount) AS TAmnt, 
ProductPrice-SUM(Amount) AS OutB 
FROM t1
GROUP BY Name;
我也试过,但结果似乎不是我想要的

SELECT Name,SUM(Amount) AS TAmnt, 
SUM(ProductPrice)-SUM(Amount) AS OutB 
FROM t1 
GROUP BY Name;

查看我缺少的内容有什么帮助吗?

您可以尝试按名称和产品价格汇总:

SELECT
    Name,
    SUM(Amount) AS TAmnt, 
    ProductPrice - SUM(Amount) AS OutB 
FROM t1
GROUP BY
    Name,
    ProductPrice;
正如@Barmar所提到的,您当前的表没有规范化。如果一个产品只有一个价格,您应该创建一个单独的价格表,并将此信息存储在该表中。

使用
ANY\u VALUE()
以防止出现错误。它将从组中的任何行中选择
ProductPrice

SELECT Name, SUM(Amount) AS TAmnt, 
        ANY_VALUE(ProductPrice)-SUM(Amount) AS OutB 
FROM t1
GROUP BY Name;

ProductPrice
名称的每一行是否始终相同?您应该规范化您的数据,并将其放在一个单独的表中,每个名称一行。我没有发现任何错误。另请参见,您似乎没有主键,这在适当的时候可能会出现问题