我有一个包含多列的MySQL数据库。条目可以多次出现在列中(主键除外)。我希望能够为一列中的每个匹配的不同条目返回整个行,该行包含来自表的第一个外观,按第二列排序。考虑如下表:
---------------------------------------
| id | item | cost | location | ... |
---------------------------------------
| 1 | apple | 10 | kitchen | ... |
| 2 | apple | 20 | fridge | ... |
| 3 | banana | 20 | kitchen | ... |
| 4 | carrot | 30 | fridge | ... |
| 5 | apple | 10 | barn | ... |
---------------------------------------
因此,按成本(然后是id)排序并选择不同的项目,我会得到第1,3和4行(每个项目最便宜的成本。)按位置排序(然后是id)并选择不同的项目,我会回来5,4,3。(每个项目的字母第一个位置。)
我目前选择不同的whatevers然后为每一个,按索引列对表进行排序并选择它出现的第一行,然后,当我拥有它们时,按索引求助该结果集。我也可以选择索引排序的整个表,然后每次找到新的东西时都会向本地数组添加一行,直到我有限制为止。第一个需要大量选择,第二个需要阅读整个表格。
有更好的方法吗? (我使用的是MySQL 5.1.53和PHP 5.2.11。)
答案 0 :(得分:0)
如果我理解得很清楚,那么你的问题就是SQL中分组最大的。它已在StackOverflow上被询问,例如here
MySQL manual还有一个专门页面,以及许多博客文章,例如此高级post。