PHP如何找到重复项
我正在使用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
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:)