如何为每个客户选择和排序一行

时间:2013-07-07 09:47:53

标签: php sql

我有一个属性表。我想选择所有的属性。

但我想安排一些属性,如客户A的1个属性,客户B的1个属性,客户C的1个属性等,如下所示。

customer    Property ID
 A              1001
 B              900
 C              1002
 D              1003
 A              799
 B              803
 C              600
 D              670

我该怎么做?任何帮助表示感谢。

问候

2 个答案:

答案 0 :(得分:1)

$query = mysql_query("SELECT customer, property_id FROM mytable");

$output = array();

while ($row = mysql_fetch_assoc($query)) {
   $output[$row['customer']][] = $row['property_id'];
}

var_dump($output);

答案 1 :(得分:1)

如果您更喜欢纯 SQL 解决方案(使用MySQL):

SET @rank = 1;
SET @prev = '';

SELECT customer, property
FROM (SELECT *,
      IF(@prev <> customer, @rank := 1, @rank := @rank + 1) AS rank,
      IF(@prev <> customer, @prev := customer, NULL)
      FROM properties
      ORDER BY customer) AS ranked
ORDER BY rank, customer;

这是SQLFiddle

我们的想法是在每个客户中枚举连续数字 1..n 的所有属性,然后首先使用rank = 1,然后使用rank = 2,等等...