2

我不知道如何问这个问题,所以我不确定我在找什么。这是我想要做的。

我的桌子上有邮政编码和一个计数器栏

 id  zipcode count
 11  50022   23
 12  50023   1
 13  50025   8
 14  50042   2
 15  50076   2

我需要有一个选择语句,它返回邮政编码 X 计数器列中的金额(整数值)。

所以选择返回看起来像这样:

50022
50022
50022
50022
50022
50022 (and on 23 times)
50023 (one record here)
50025 (there were eight of these so eight records).

等等。

是否有一个函数或一组函数可以在 MySQL 中实现这一点?

这是更大查询的一部分,因此我无法在服务器端代码中处理它(否则我只会创建一个循环)。

希望这一切都有意义,并提前感谢!

更新:我不是想得到一个独特的分组......做相反的事情(正如下面一个人评论的那样)。

4

3 回答 3

0

这可能是你想要的。虽然我没有很好地理解你的问题..

    $q = mysql_query("SELECT count FROM <table> WHERE zipcode='50022'");

    while($data = mysql_fetch_array($q)){
    echo "The {$data['zipcode']} is {$data['count']} times printed.";
    for($i=1;$i<=$data['count'];$i++){
      echo $i." - ".$data['zipcode'];
}
    }

更新:

如果您尝试在 mysql 中执行此操作,请在 SQL 查询中尝试此操作

SELECT count FROM <table> WHERE zipcode='50022'

<table>更改为您的表名。

于 2013-07-26T18:44:59.627 回答
0

我认为您正在寻找的是 sql group by 子句。此子句允许您按特定限定符对数据进行分组,并添加到您的 select 语句中。

因此,如果我理解正确并且您按计数列对邮政编码进行分组,您将执行以下操作:

从 [table_name] GROUP BY 计数中选择邮政编码;

我希望这有帮助。

于 2013-07-26T18:45:16.450 回答
0

创建一个虚拟表,如下所示

CREATE TABLE `dummy1` (
  `dummyId` int(11) NOT NULL,
  PRIMARY KEY  (`dummyId`)
) 

insert into dummy1 values(1),(2),(3), (4), (5),.......(n);

存在n是相当大的数字

之后使用他下面的查询来填充结果

select zipcode from yourtable, dummy1 where countValue <= dummyId order by zipcode

我知道这不是一个很好的解决方案。但是由于mysql不像connect byoracle那样支持,这似乎是克服这种情况的解决方案

对于类似的问题, 请参阅此

于 2013-07-26T18:46:49.823 回答