我不知道如何提问,所以我不确定我在寻找什么。这是我想要做的。
我的桌子有拉链码和计数器栏
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中实现此功能的功能或分组?
这是更大查询的一部分,所以我无法在服务器端代码中处理这个问题(否则我只会创建一个循环)。
希望所有这些都有意义并提前感谢!
更新:我并不是想要一个独特的分组......做相反的事情(正如下面评论过的一个人)。
答案 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