1

我有一张属性表。我想选择所有属性。

但我想像下面这样安排客户 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

我怎样才能做到这一点 ?任何帮助表示赞赏。

问候

4

2 回答 2

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);
于 2013-07-07T09:54:22.207 回答
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..nrank = 1的所有属性,然后首先获取具有 的属性,然后是具有 的属性rank = 2,依此类推...

于 2013-07-07T11:32:57.660 回答