Php 从一个表中为一列中的每个不同条目按另一列的顺序选择完整的第一行
我有一个多栏的MySQL数据库。条目可以在列中多次出现(主键除外)。我希望能够为一列中的每个匹配的不同条目返回整行,该行包含表中该条目的第一个外观,并按第二列排序。考虑一个表格:Php 从一个表中为一列中的每个不同条目按另一列的顺序选择完整的第一行,php,mysql,Php,Mysql,我有一个多栏的MySQL数据库。条目可以在列中多次出现(主键除外)。我希望能够为一列中的每个匹配的不同条目返回整行,该行包含表中该条目的第一个外观,并按第二列排序。考虑一个表格: --------------------------------------- | id | item | cost | location | ... | --------------------------------------- | 1 | apple | 10 | kitchen | ..
---------------------------------------
| 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。(每个项目按字母顺序排列的第一个位置。)
我当前选择了不同的whatever,然后针对每个whatever,按索引列对表进行排序,并选择它出现在其中的第一行,然后,当我有了所有whatever时,使用索引的结果集。我还可以选择按索引排序的整个表,然后在每次找到新的任意项时向本地数组中添加一行,直到达到极限。第一个需要大量的选择,第二个需要阅读整个表格
有更好的方法吗?(我使用的是MySQL 5.1.53和PHP5.2.11。)如果我理解得很好,您的问题是SQL中著名的组最大值。例如,它已经在StackOverflow上被询问过
在中还有一个专门的页面,以及许多博客帖子,比如这篇高层文章。老实说。。。您可以包括预期结果吗?在数据库中,表中的行的保存顺序被认为是不相关的,因为随着行的插入、更新、删除等,顺序可能会(而且经常会)发生变化。如果您需要以特定的顺序保存行,则需要使用order BY子句指定该顺序。