Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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如何找到重复项_Php_Mysql_Loops - Fatal编程技术网

PHP如何找到重复项

PHP如何找到重复项,php,mysql,loops,Php,Mysql,Loops,我正在使用php,我想显示数据库中的记录列表。 例如,下面是表结构 sno val1 val2 val3 amt 1 2c 3e I 500 2 2b i7 I 1500 3 2w u9 I 0 4 18 e3 I 50 5 2c 3e S 70 现在我想显示如下的记录 sno val1 val2 value 1 2c 3e 1 2 2b i7 1 3

我正在使用php,我想显示数据库中的记录列表。 例如,下面是表结构

sno val1 val2 val3  amt
1    2c   3e   I    500
2    2b   i7   I    1500
3    2w   u9   I    0
4    18   e3   I    50
5    2c   3e   S    70
现在我想显示如下的记录

sno val1  val2  value
1    2c    3e    1
2    2b    i7    1
3    2w    u9    1
4    18    e3    1
5    2c    3e    0 //because already listed
我使用普通while循环来显示此结构,但我不知道该值是否已列出

任何人都可以提供一个解决方案:

$listed = array();
while() // your loop
{
    if(in_array($uniq_id_of_your_item, $listed)) {
         continue;
    }
    $listed[] = $uniq_id_of_your_item;

    // rest of your code
}
第二种解决方案(更好):您可以在SQL查询中将其限制为一种解决方案:

$listed = array();
while() // your loop
{
    if(in_array($uniq_id_of_your_item, $listed)) {
         continue;
    }
    $listed[] = $uniq_id_of_your_item;

    // rest of your code
}
第二种解决方案(更好):您可以在SQL查询中限制它,您可以尝试:

SELECT a.sno, a.val1, a.val2,
       CASE WHEN COUNT(*) > 1 THEN 0 ELSE 1 END value
FROM table_name a
JOIN table_name b 
ON a.val1 = b.val1 
   AND a.val2 = b.val2 
   AND a.sno >= b.sno
GROUP BY a.sno
您可以尝试:

SELECT a.sno, a.val1, a.val2,
       CASE WHEN COUNT(*) > 1 THEN 0 ELSE 1 END value
FROM table_name a
JOIN table_name b 
ON a.val1 = b.val1 
   AND a.val2 = b.val2 
   AND a.sno >= b.sno
GROUP BY a.sno

值为零意味着什么?将每个值添加到数组中,然后检查它是否已经存在。结果,
value
列表示的计数与此
val1和val2
字段值的计数相同,可以
array\u merge
执行此操作吗?当array1和array2合并时,它将跳过一个副本。我想显示所有记录(包含重复记录),如果已经列出,唯一的一件事就是我想显示0值0的含义是什么?将每个值添加到数组中,然后在结果中检查它是否已经存在,
value
列表示与此
val1和val2
字段值的计数相同的值可以
array\u merge
执行此操作吗?当array1和array2合并时,它将跳过一个副本。我想显示所有记录(带有副本),如果已经列出,则唯一一件事意味着我想显示0数据将来自db,最小100条记录,最大10000条记录。。那么,我将如何使用数组和in_数组实现这一点?使用select、count、join和group by:)数据将来自db,最小记录数为100,最大记录数为10000。。那么,如何使用数组和in_数组实现这一点呢?使用select、count、join和group by:)