繁体   English   中英

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

[英]mysql return row for each field column count value

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

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

 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中是否有可以实现此目的的功能或功能组合?

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

希望所有这些都是有道理的,并预先感谢!

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

这可以是您想要的。 虽然我不太了解您的问题。

    $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>更改表名。

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

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

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

我希望这有帮助。

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

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 ,因此这似乎是克服这种情况的一种解决方案

如有类似问题, 请参阅此

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM