mysql查询 - 按组合ID分组

时间:2012-03-04 00:57:34

标签: php mysql database

以下是我正在使用的表格:

CREATE TABLE `index` (
 `wid` int(7) unsigned NOT NULL,
 `pid` int(7) unsigned NOT NULL,
 `value` tinyint(3) unsigned NOT NULL DEFAULT '0',
 UNIQUE KEY `wid` (`wid`,`pid`),
 KEY `pid` (`pid`),
 KEY `value` (`value`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

我有“pid”的整数值,匹配各种“wid”,它们只是唯一的。

例如,我有:

pid - wid - value
 1  -  5  -  7
 1  -  6  -  5
 1  -  7  -  9
 2  -  5  -  2
 2  -  8  -  4
 3  -  8  -  8
 3  -  7  -  12
 4  -  5  -  5
 .. -  .. -  ..

现在让我们假设我想获得PID,其中WID匹配5和7的最高总和为VALUE。

因此PID 1匹配2个WID(5,7),其总和值为16(7 + 9)。 并且PID 2仅匹配1个WID(5),其总和VALUE为2。 PID 3匹配WID(7),其总和值为12。

我需要构造执行此操作的查询,并按SUM VALUE降序排序。

如:

SELECT
    index.pid, SUM(index.value) TotalSum
FROM index
WHERE
    index.wid = 5 or index.wid = 7
GROUP BY UNIQUE(index.pid)
ORDER BY TotalSum DESC

我知道这个查询不正确,但我正在尝试展示我想要完成的任务。

1 个答案:

答案 0 :(得分:0)

你想要完成的事情是正确的。

尝试以下:

SELECT index.pid, SUM(index.value) TotalSum
FROM index
WHERE (wid = 5 or wid = 7)   //if you want only from wid 5,7 elase no need for it
GROUP BY index.pid
ORDER BY TotalSum DESC