mysql返回每个字段列计数值的行

时间:2013-07-26 18:37:47

标签: mysql select

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

我的桌子有拉链码和计数器栏

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

我需要一个select语句,它返回zipcodes X中计数器列中的数量(整数值)。

所以select return看起来像这样:

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

等等。

是否有可以在MySQL中实现此功能的功能或分组?

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

希望所有这些都有意义并提前感谢!

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

3 个答案:

答案 0 :(得分: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>更改您的表名。

答案 1 :(得分:0)

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

因此,如果我理解正确并且您按照计数列对您的邮政编码进行分组,那么您可以采取以下措施:

SELECT zipcode FROM [table_name] GROUP BY计数;

我希望这会有所帮助。

答案 2 :(得分: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不像oracle那样支持connect by,这似乎是克服这种情况的解决方案

对于类似的问题,Refer This