InfoQ

交流

讨论:怎样在mysql 数据库中有条件删除数据

作者 无梦僧 发布于 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 数据库中有条件删除数据

加入书签
digg+,
reddit+,
del.icio.us+,
dzone+

9 条回复

回复

救命呀!!!!!!!!!!!!!! 发表人 无梦僧 发表于 08月27日
我也不会, 要是我会,我一定会告诉你的 发表人 bluezsh 发表于 08月27日
错了别骂我 delete from pro where t.. 发表人 冬冬 发表于 08月27日
bluezsh 谢谢你的好意。 p.. 发表人 无梦僧 发表于 08月27日
我用一下看。 发表人 无梦僧 发表于 08月27日
晕先保存数据 发表人 冬冬 发表于 08月27日
我用临时表z 做的。结构一样。 发表人 无梦僧 发表于 08月27日
<?php //數據庫的連接,省略.. 发表人 wujiyuan 发表于 08月27日
<?php $db_name="uz60g1_db"; .. 发表人 无梦僧 发表于 08月28日
  1. 救命呀!!!!!!!!!!!!!!

  2. 我也不会, 要是我会,我一定会告诉你的

  3. 错了别骂我
    delete from pro where trade_date

  4. 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 对数据库编程也是一只半解。希望有大侠帮我。

  5. 我用一下看。

  6. 晕先保存数据

  7. 我用临时表z 做的。结构一样。

  8. <?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); //刪除不要的;
    }
    ?>

    偶也是初學,這個應該可以,你試試吧,搞壞數據不負責先哦,呵

  9. <?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); //刪除不要的;
    }
    ?>

    试过了。数据一条也没少。




  10. 我有话要讲:(可以匿名发表, 发广告的有多远请滚多远!!!)

    昵称: 请输入验证码:


抢着回答

村里来了个超超级的衰哥》》》飞光

一点不夸张,绝对的衰。

字符串与数组之间的转化问题~~~~

为什么将字符串转化成数组时不能用以下方式进行: $str_fil...

Warning: session_start()

调试程序出现错误, 页首: Warning: session_start(): ope...

提个问题。。。

funtions.php的内容如下: <?php $a = array ( "test"=...

为什么在redhat linux 中打不开下拉列表...

我在Windows 下面开发好PHP+Mysql+apach的网站。 其中里面用到...

文本更新问题

如果一个文件正在被用户使用,现在当后台程序要改变文件内容的话...

这个怎么实现?!

www.lyngx.com 菜单导航是怎么做的,知道村民的回个话,小妹在这...

测试新开的ftp

ftp://219.78.87.6:21 ftp://219.78.87.6/ 系列广告 反应...

巴豆过得真是休娴

:cool:

大家觉得postgresql怎么样?

和mysql比比

[]