[英]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.