联合中重复记录的总和

Posted

技术标签:

【中文标题】联合中重复记录的总和【英文标题】:sum of Duplicates records in union 【发布时间】:2021-01-03 05:57:09 【问题描述】:

我需要获取 item_name 和 extra 相同的所有重复记录的总和,然后对数量求和。 这是我的代码。

    $query_or1="select * from invoice_client where order_id='$order1'
    
       UNION all
       select * from invoice_client where order_id='$order2'
       UNION all
       select * from invoice_client where order_id='$order3'
       UNION all
       select * from invoice_client where order_id='$order4'
       UNION    all 
       select * from invoice_client where order_id='$order5'
       ORDER BY extra, item_name
       ";**

// 使用以下代码显示结果 回声

                  **echo 
                  "<tr>
                  
                  <td>".$result_or1['inv_id']."</td>
                  
                    <td>".$result_or1['item_name']."</td>
                    <td>".$result_or1['extra']."</td>
                    <td>".$result_or1['quantity']."</td>
                    <td>".$get_wet*$result_or1['quantity']."</td>
                      
                                      </tr>";**

【问题讨论】:

为什么首先使用 UNION?这应该是 一个 SELECT 语句,带有WHERE order_id IN (…, …) 然后,您可能需要查看 GROUP BY 和聚合函数。 您需要意识到查询的WHERE 部分可能包含多个条件! 【参考方案1】:

看起来你想要一个带有 in 条件的 where 子句,然后是聚合:

select extra, item_name, sum(quantity) sum_quantity
from invoice_client
where corder_id in (?, ?, ?, ?)
group by extra, item_name
order by extra, item_name

请注意,我使用? 表示查询的参数;您应该真正使用准备好的语句,而不是在查询字符串中连接变量:这使您的代码更安全、更高效。

【讨论】:

以上是关于联合中重复记录的总和的主要内容,如果未能解决你的问题,请参考以下文章

使用联合从 MS Access 表中选择随机记录 [重复]

MySQL 从具有重复引用条目的联合表中选择唯一记录

给有重复记录的表添加唯一索引

Leetcode刷题记录--39. 组合总和

sql删除重复记录

连接表SQL PHP中列的总和不起作用[重复]