InfoQ

交流

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

作者 无梦僧 发布于 2003-08-02 分类:数据库技术

数据库结构pro 是存放产品信息的。每条记录包括产品名字(product)、该条产品信息发布的时间(trade_date)、该产品发布的厂家名字类型为数据id号(id),因为同一家厂家比如id=2的厂家发布的产品有2003/7/2、2002/3/5。。等不同时间发布的信息。
我想只留下该厂家最新发布的信息。以时间(taade_date)最新的留下来。其余的全部不要。但我不知道怎样写出程序可以一下就把所有的厂家的旧信息全删除。谁能教教我呀。



逛论坛交流怎样在mysql 数据库中有条件删除数据

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

8 条回复

回复

我用phpadmin软件,先用select max(tra.. 发表人 无梦僧 发表于 08月27日
<?php $db_name="uz60g1_db"; //数.. 发表人 wujiyuan 发表于 08月28日
while ($row = mysql_fetch_row($resul.. 发表人 无梦僧 发表于 08月28日
<?php $db_name="uz60g1_db"; $d.. 发表人 无梦僧 发表于 08月28日
QUOTE: 最初由 无梦僧 发布 .. 发表人 wujiyuan 发表于 08月28日
运行后真的没返回值。 真不知道是那里.. 发表人 无梦僧 发表于 08月29日
试试一步步调试了,看哪句会挂掉 发表人 bralf 发表于 08月29日
偶也不知是什麼問題啦,你自己慢慢調試吧.. 发表人 wujiyuan 发表于 08月30日
  1. 我用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高手能帮小弟这个忙。

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

    你試一下這個,應該成功吧,你看一下表是不是正確

  3. while ($row = mysql_fetch_row($result)) 该为while ($row = mysql_fetch_array$result))
    有返回值。可返回此客户最后日期没用。

  4. <?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 日期: ------------------------------------------- 日期的不到值。也只出现一次。不知道为什么??


  5. QUOTE:
    最初由 无梦僧 发布
    [B]while ($row = mysql_fetch_row($result)) 该为while ($row = mysql_fetch_array$result))
    有返回值。可返回此客户最后日期没用。 [/B]

    while ($row = mysql_fetch_row($result)) 這個沒有返回值?不會吧!你按我寫的咝锌纯,我有做過類似的,應該是行得通的

  6. 运行后真的没返回值。
    真不知道是那里问题。
    :(

  7. 试试一步步调试了,看哪句会挂掉

  8. 偶也不知是什麼問題啦,你自己慢慢調試吧!




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

    昵称: 请输入验证码:


抢着回答

在村里转了一圈,闪人了

闪了

php+mysql的问题

我把字段设成TEXT格式 了,但在存字时,只能存几十个中文?请教如何...

请教!!!!

偶下了一个和村一模一样的论坛,但发现后台没有删除单个贴子的功...

sadly老大进来

http://www.codechina.net/codelist.asp?id=2798 你要的CS 源...

如何实现计划任务?

一台web服务器,linux7.3,apache,php实现在线相册功能 想实现...

不好意思,JAVA里好像没什么人气,只能...

初学JAVA,遇到问题,实在是解决不了,已经在几个论坛里问了几天...

哪位高手进来看一下

一个文本站内搜索的程序,其中确定文件绝对路径的一段如下: if...

建议高手们.......??

最近发现有关Apache的配置问题特多,因此建议高手们多发表关于这方...

linux下PHP自动执行文件?

哪位同仁高手有PHP的自动执行文件的代码请帮忙啊,希望能够贴出来...

用htmlspecialchars对HTML编码后怎样还...

手动写一个函数一个个换吗?还是有内置函数?

[]