如何使用这段代码只能得到一个结果?我试着数一数我们能在桌子上找到每一个“双”的次数。db连接没有什么问题,它只得到重复的值。谢谢。
The output should be like
DOUBLE COUNT
01 02 10 (as example)
03 04 12 (as example)
I am getting duplicated like...
01 02 10 (as example)
01 02 10 (as example)
<?php
if ($check == 'doubles'){
sort($doubles);
foreach ($doubles as $double) {
explode(" ", $double);
$dn1 = $double[0].$double[1];
$dn2 = $double[2].$double[3];
if ($stmt = $post_con->prepare('SELECT DISTINCT FROM tb WHERE CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %") AND CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %")')) {
$stmt->bind_param("ss", $dn1, $dn2);
$dn1 = sprintf('%02d', $dn1);
$dn2 = sprintf('%02d', $dn2);
$stmt->execute();
$stmt->store_result();
$qty = $stmt->num_rows;
echo '<div class="mini">'.$dn1.'</div>';
echo '<div class="mini">'.$dn2.'</div>';
echo '<div class="n-sort">'.$qty.'</div>';
}
}
?>发布于 2016-04-11 21:43:00
若要计数重复项,请使用以下查询:
SELECT count(1) FROM (
SELECT res, Count(1)
FROM tb
WHERE CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %") --I don't know did you need this conditions...
AND CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %")
GROUP BY res
HAVING Count(1) > 1)编辑:
如果您尝试重复列表,那么:
SELECT res, Count(1)
FROM tb
WHERE CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %") --I don't know did you need this conditions...
AND CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %")
GROUP BY res
HAVING Count(1) > 1发布于 2016-04-11 21:43:16
使用distinct将返回整个表中的所有不同行,但如果存在多个唯一行,则将返回每一行。
您想要的是使用像COUNT(*)这样的聚合函数来计算与您的条件相匹配的行数。
SELECT
COUNT(*)
FROM tb
WHERE
CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %") AND
CONCAT(" ", res, " ") LIKE CONCAT("% ", ?, " %")这将返回与WHERE条件匹配的行数。
如果要查找表中每个双值的次数,可以按双值分组并计数每个组。例如:
SELECT
res,
COUNT(*)
FROM tb
GROUP BY
res我很难回答这个问题,因为我不确定表中有哪些字段,res是什么,以及您感兴趣的双值在哪里发挥作用。
https://stackoverflow.com/questions/36559645
复制相似问题