在村里转了一圈,闪人了
闪了
- 娱乐乐园,
作者 无梦僧 发布于 2003-08-02 分类:数据库技术
数据库结构pro 是存放产品信息的。每条记录包括产品名字(product)、该条产品信息发布的时间(trade_date)、该产品发布的厂家名字类型为数据id号(id),因为同一家厂家比如id=2的厂家发布的产品有2003/7/2、2002/3/5。。等不同时间发布的信息。
我想只留下该厂家最新发布的信息。以时间(taade_date)最新的留下来。其余的全部不要。但我不知道怎样写出程序可以一下就把所有的厂家的旧信息全删除。谁能教教我呀。
逛论坛交流:怎样在mysql 数据库中有条件删除数据
我用phpadmin软件,先用select max(trade_date) from pro where id="1" 找出id=1该厂家最新的发布时间trade_date(例如:trade_date=2003-04-09 00:00:00。再用delete from pro where id="1" and trade_date<"2003-04-09 00:00:00"把多余的信息删除。
这样一次只能删一家。而我一共要删2万多。每个月要新加1000多。希望有php高手能帮小弟这个忙。
<?php
$db_name="uz60g1_db"; //数据库名称
$db_user=" 235345 "; //数据库用户名
$db_pass=" 345345" //数据库密码
$db_host="localhost"; //数据库地址
$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name,$db);
$result = mysql_query("select id from pro group by id ",$db);//返回所有的客戶id ;
while ($row = mysql_fetch_row($result))
{
$result2 = mysql_query("select max(trade_date) from pro where id = $row[0]",$db); //返回此客戶的最後日期;
$row2 = mysql_fetch_row($result2);
$result3 = mysql_query("delete from pro where ((trade_date < $row2[0])and(id = $row[0]))",$db); //刪除不要的;
}
?>
你試一下這個,應該成功吧,你看一下表是不是正確
while ($row = mysql_fetch_row($result)) 该为while ($row = mysql_fetch_array$result))
有返回值。可返回此客户最后日期没用。
<?php
$db_name="uz60g1_db";
$db_user="345432";
$db_pass="3452345";
$db_host="localhost";
$db = mysql_connect("localhost", $db_user,$db_pass);
mysql_select_db($db_name,$db);
$result = mysql_query("select id from z group by id ",$db);//返回所有的客戶id ;
while ($row = mysql_fetch_array($result))
printf("id: %s
", $row["id"]);
{
$result2 = mysql_query("select max(trade_date) from z where id = $row[0]",$db); //返回此客戶的最後日期;
$row2 = mysql_fetch_array($result2);
printf("日期: %s
", $row2["trade_date"]);
$result3 = mysql_query("delete from z where ((trade_date < $row2[0])and(id = $row[0]))",$db); //刪除不要的;
}
返回为id: 400
id: 500
日期:
-------------------------------------------
日期的不到值。也只出现一次。不知道为什么??
QUOTE: 最初由 无梦僧 发布
[B]while ($row = mysql_fetch_row($result)) 该为while ($row = mysql_fetch_array$result))
有返回值。可返回此客户最后日期没用。 [/B]
while ($row = mysql_fetch_row($result)) 這個沒有返回值?不會吧!你按我寫的咝锌纯,我有做過類似的,應該是行得通的
运行后真的没返回值。
真不知道是那里问题。
:(
试试一步步调试了,看哪句会挂掉
偶也不知是什麼問題啦,你自己慢慢調試吧!
8 条回复
回复