php mysql 过滤重复记录并排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php mysql 过滤重复记录并排序相关的知识,希望对你有一定的参考价值。
table1
id name
1 a
2 b
3 c
table2
id name cont
1 a aa
2 b bb
3 a aaaa
SELECT *,count(distinct table2.name) FROM table1,table2 WHERE table1.name = table2.name GROUP BY table2.name ORDER BY table2.id DESC";
重复的记录是过滤掉了,现在问题是我要的是table2中重复的name=a的ID最大的cont=aaaa的内容。
每次读出来的都是name=a ,cont=aa的内容。。。
$sqlcha ="SELECT *,count(distinct crm_followinfo.FOL_Comname) FROM crm_customers,crm_followinfo WHERE crm_customers.CUS_Comname = crm_followinfo.FOL_Comname GROUP BY crm_followinfo.FOL_Comname ORDER BY FOL_Id DESC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $sqlcha, $startRow_Recordset1, $maxRows_Recordset1);
$connn = mysql_query($query_limit_Recordset1, $conn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($connn);
在这个表crm_followinfo 有个FOL_Id字段 , 如何除掉重复后,显示最大的FOL_Id的这条记录呢?
select name,desc,count(desc) as c from tmp_table group by name,desc order by c desc limit 9;
把name放在前面就是优先给name排序,name一样的就按后面的desc排序。
这个句子就能满足你的要求。
3.以count(desc)的多少排列name;
不知道这句话什么意思。不过对你想要的结果没有什么影响。
另外,列名不要用desc。desc 是数据库中的一个关键字。原则上最好不要用来做列名。
------------------------补充-----------------------
满足你的第三个条件也很容易,
group by name,desc 变成
group by name,count(desc)就可以了 参考技术A select name, max(cont) as cont
into #temp2
from @table2
group by name
SELECT *
FROM @table1 a, #temp2 b
WHERE a.name = b.name
ORDER BY b.cont desc, b.name DESC
使用 PHP 更新重复的 MySQL 记录
【中文标题】使用 PHP 更新重复的 MySQL 记录【英文标题】:Update duplicate MySQL record using PHP 【发布时间】:2011-08-30 11:50:48 【问题描述】:我需要使用 PHP 更新数据库中的重复记录。
例如:
我在数据库中有三个相同的记录micheal
。我需要将两个micheal
记录更新为micheal 1
和micheal 2
,但留下一个micheal
原样。
【问题讨论】:
标记为紧急并不会帮助您,而是在您的问题中小心谨慎。现在,到目前为止,您尝试过什么? 【参考方案1】:试试....
UPDATE yourdata
SET name='michael 1'
WHERE name='michael'
LIMIT 0,1;
UPDATE yourdata
SET name='michael 2'
WHERE name='michael'
LIMIT 0,1;
然后添加唯一索引以防止再次发生。
【讨论】:
如果里面有 10000michael
呢? :) for ($i=0;$i<9999;$i++) ...
?【参考方案2】:
$query = "SELECT * FROM table ORDER BY name";
$result = mysql_query($query, $db) or die('MySQL Error: ' . mysql_error()); // if mysql_query fails, prints the error reported by the mysql server and stops execution
$lastName = "";
$i = 1;
while($row = mysql_fetch_assoc($result))
if ( $lastName==$row['name'] )
$q = "UPDATE table set name ='".$row['name']." ".$i."' WHERE id = ".$row['id'];
mysql_query($q, $dbh) or die ("problema con query");
$i++;
else
$i = 1;
$lastName = $row['name'];
如果您在并发修改时遇到问题,请尝试将 id 和名称存储为数组并启动更新。
【讨论】:
以上是关于php mysql 过滤重复记录并排序的主要内容,如果未能解决你的问题,请参考以下文章
mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留