Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对单行中由逗号分隔的唯一id进行计数_Php_Mysql - Fatal编程技术网

Php 对单行中由逗号分隔的唯一id进行计数

Php 对单行中由逗号分隔的唯一id进行计数,php,mysql,Php,Mysql,我在mysql中有如下详细信息 user_id follow_user_id 1 2,3,3,3,3 5 1,2,3,3,3,3 6 1,2,3,3,3,3 我编写以下代码以获得唯一代码,如下所示: SEL

我在mysql中有如下详细信息

   user_id                  follow_user_id                                                    
   1                      2,3,3,3,3
   5                      1,2,3,3,3,3
   6                      1,2,3,3,3,3  
我编写以下代码以获得唯一代码,如下所示:

SELECT LENGTH( follow_user_id ) - LENGTH( REPLACE( follow_user_id, ',', '' ) ) +1 AS no_of_follow FROM follow WHERE user_id =1;
但它提供了结果:6 我需要完全唯一的行:即:4

请帮帮我 谢谢和问候
提前

除了数据库设计问题之外,您可以在将行提取到$result后在PHP中使用:

count(array_unique(explode(",",$result["follow_user_id")));

这更好更快;)

或者在SQL中执行此操作:-

SELECT COUNT(DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(follow_user_id, ',', units.i + tens.i * 10), ',', -1) AS col1)
FROM sometable
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)units
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)tens
WHERE user_id = 1
(最多可处理100个逗号分隔的值)

但是,如果数据库设计正确规范化,这将变得容易得多。

$query=“从follow WHERE user_id=”中选择follow_user_id”。$\u POST['user_id']。”$query\u run=mysql\u query($query)$row=mysql\u fetch\u assoc($query\u run)

$count=count(数组\唯一(分解(“,”,$row['follow\ u user \ u id'))


$count

坏的DB设计,你应该考虑规范化,每一个用户ID和一个SUPUR USER ID只有一行,但只有一行,但我不知道如何正确地postok Abhik Chakraborty先生,我正确地张贴它,这将是非常困难的,如果不是不可能的使用查询。如果你想保持这种结构,你需要在选择数据后使用PHP进行计算。我仍然建议你规范化数据,因为以后你在尝试使用查询查找一些关系数据时会遇到困难。谢谢先生,有一些小的更改计数(array_unique(explode(“,”,$result['follow_user_id'))$query=“从follow WHERE user_id=”中选择follow_user_id”。$data['user_id']。”$query\u run=mysql\u query($query)$row=mysql\u fetch\u assoc($query\u run)$计数=计数(数组_唯一(分解(“,”,$row['follow_user_id'));echo$count
SELECT COUNT(DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(follow_user_id, ',', units.i + tens.i * 10), ',', -1) AS col1)
FROM sometable
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)units
CROSS JOIN (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9)tens
WHERE user_id = 1