村里来了个超超级的衰哥》》》飞光
一点不夸张,绝对的衰。
- 娱乐乐园,
作者 无梦僧 发布于 2003-08-02 分类:php基础编程
数据库结构pro 是存放产品信息的。每条记录包括产品名字(product)、该条产品信息发布的时间(trade_date)、该产品发布的厂家名字类型为数据id号(id),因为同一家厂家比如id=2的厂家发布的产品有2003/7/2、2002/3/5。。等不同时间发布的信息。
我想只留下该厂家最新发布的信息。以时间(taade_date)最新的留下来。其余的全部不要。但我不知道怎样写出程序可以一下就把所有的厂家的旧信息全删除。谁能教教我呀。
我用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高手能帮小弟这个忙。
逛论坛交流:怎样在mysql 数据库中有条件删除数据
救命呀!!!!!!!!!!!!!!
我也不会, 要是我会,我一定会告诉你的
错了别骂我
delete from pro where trade_date
bluezsh 谢谢你的好意。
php 我没学过。我想用循环语句来做。
比如
fro each idd into ( select id from pro ){
delete from pro where id=idd and trade_date)<{select max(trade_date) from pro where id=idd)}
next
我没学过PHP 对数据库编程也是一只半解。希望有大侠帮我。
我用一下看。
晕先保存数据
我用临时表z 做的。结构一样。
<?php
//數據庫的連接,省略....
$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); //刪除不要的;
}
?>
偶也是初學,這個應該可以,你試試吧,搞壞數據不負責先哦,呵
<?php
$db_name="uz60g1_db"; //数据库名称
$db_user=" 235345 "; //数据库用户名
$db_pass=" 345345" //数据库密码
$db_host="localhost"; //数据库地址
require("mysql.php");
$sql = new MySQL_class;
$sql->Setup ($db_user,$db_pass,$db_host);
$sql->Create("$db_name");
$result = mysql_query("select id from z group by id ",$db);//返回所有的客戶id ;
while ($row = mysql_fetch_row($result))
{
$result2 = mysql_query("select max(trade_date) from z where id = $row[0]",$db); //返回此客戶的最後日期;
$row2 = mysql_fetch_row($result2);
$result3 = mysql_query("delete from z where ((trade_date < $row2[0])and(id = $row[0]))",$db); //刪除不要的;
}
?>
试过了。数据一条也没少。
9 条回复
回复