PHP:按字符数按组计算数量

时间:2018-04-03 03:48:57

标签: php sql

我有一张桌子,如下:

enter image description here

我想从mac_addr生成每个字符数的count(count).. 表中的例子:

  • 15个字符= 5
  • 19个字符= 2
  • 24个字符= 3

但我想使用一个查询.. 我现在用它来计算每个查询的不同(不是在一个查询中)。 例如:

$query1 = mysqli_query($conn,"SELECT COUNT(*) AS 'jumlah' FROM orders WHERE ((LENGTH(mac_addr)=15))");
$cek1 = mysqli_fetch_assoc($query1);
$kar1 = $cek1['jumlah'];

$query2 = mysqli_query($conn,"SELECT COUNT(*) AS 'jumlah' FROM orders WHERE ((LENGTH(mac_addr)>15) AND (LENGTH(mac_addr)<24))");
$cek2 = mysqli_fetch_assoc($query2);
$kar2 = $cek2['jumlah'];

$query3 = mysqli_query($conn,"SELECT COUNT(*) AS 'jumlah' FROM orders WHERE ((LENGTH(mac_addr)>19))");
$cek3 = mysqli_fetch_assoc($query3);
$kar3 = $cek3['jumlah'];

echo '15 karakter ='.$kar1;
echo '<br>';
echo '19 karakter ='.$kar2;
echo '<br>';
echo '24 karakter ='.$kar3;
echo '<br>';

如果在单个查询中如何制作以避免吃太多编码/行?

2 个答案:

答案 0 :(得分:1)

您可以使用group by

SELECT LENGTH(mac_addr) as characters , count(*) AS jumlah FROM orders group by LENGTH(mac_addr)

答案 1 :(得分:0)

老实说,如果你想替换现有方法,我认为你应该这样做......

SELECT LENGTH(mac_addr), count(mac_addr) FROM orders GROUP BY LENGTH(mac_addr) WHERE LENGTH(mac_addr) > 14

然后获取结果并分析15和更长的长度以找到每个分组的确切计数。

这也可以用

完成
SELECT mac_addr FROM orders WHERE LENGTH(mac_addr) > 14

然后分析它 - 如果第一个查询有任何问题。

相关问题