首页 > 解决方案 > 过滤数据库值

问题描述

我有一张如下表

  |-----|-----|--------|
  | id  | num | amount |
  |-----|-----|--------|
  | 101 | a   |     10 |      
  | 102 | a   |      6 |   
  | 102 | a   |      3 |
  | 101 | b   |      5 |  
  | 101 | a   |     10 |
  | 101 | b   |      5 |         
  |-----|-----|--------|

我要显示的是

  |---------------------|------------------|---------------------|
  |        id           |     num          |        amount       |
  |---------------------|------------------|---------------------|
  |       101           |       a,b        |          5          |        
  |---------------------|------------------|---------------------|

即,如果 num 表中的两个不同值具有相同的 id,则将它们的数量相加并除以 3,而其他值将被丢弃。我怎样才能使用mysql实现这一点?

标签: phpmysqldatabase

解决方案


我认为这个查询会做你想要的。它检查与它们关联的不同值的 id 值num,并显示SUM它们的数量除以 3。我已经打开了一个GROUP_CONCATnum以便输出包含不同num值的列表。

SELECT id, GROUP_CONCAT(DISTINCT num) AS nums, SUM(amount) / 3 AS amount
FROM table1
GROUP BY id
HAVING COUNT(DISTINCT num) > 1

输出:

id      nums    amount
101     a,b     5

SQLFiddle


推荐阅读