Php 用于更新下一行的Mysql查询
我需要每天显示一条新闻提示和我的表格结构,如下所示Php 用于更新下一行的Mysql查询,php,mysql,Php,Mysql,我需要每天显示一条新闻提示和我的表格结构,如下所示 | id | ndate |News Tip | +------+----------------------+ | 1541 | NULL | news1 | | 1545 | 14-10-2010 | news2 | | 1567 | NULL | news3 | | 1568 | NULL | news4 | | 1582 | NULL | news5 |
| id | ndate |News Tip |
+------+----------------------+
| 1541 | NULL | news1 |
| 1545 | 14-10-2010 | news2 |
| 1567 | NULL | news3 |
| 1568 | NULL | news4 |
| 1582 | NULL | news5 |
.... ....
| 1702 | NULL | news217 |
查询select*from newstip where ndate=NULL
并检查数据是否与当前日期匹配。如果没有,我需要将下一行(本例中为1567)更新为当前日期,将所有其他行更新为NULL
id是唯一的,但没有顺序,因此无法进行下面的查询
update newstip set ndate='15-10-2010' where id=(id+1); //failure
如何解决这种情况?。我正在使用php来完成这个过程 如果您的
id
将变大,您可以查询下一行并更新它。就你而言:
UPDATE newstip SET ndate = '15-10-2010' WHERE id > 1545 ORDER BY id ASC LIMIT 1
我应该提到的是,此语句不是复制安全的。如果您的
id将变大,您可以查询下一行并更新它。就你而言:
UPDATE newstip SET ndate = '15-10-2010' WHERE id > 1545 ORDER BY id ASC LIMIT 1
我应该指出,此语句不是复制安全的。因为最后一整行的id
存储在:old\u id
:
UPDATE `newstip` SET `ndate`=15-10-2010` WHERE `id` > :old_id ORDER BY `id` LIMIT 1;
假设最后一整行的id
存储在:old_id
:
UPDATE `newstip` SET `ndate`=15-10-2010` WHERE `id` > :old_id ORDER BY `id` LIMIT 1;
如果没有记录具有id>1545
,则不会更新任何内容
如果没有记录具有id>1545
,则不会更新任何内容。下面是mysql中的一个洞过程,用于更新下面的所有行
创建过程更新()
开始
声明日期=日期(“2010年10月16日”)
声明idd INT
为newstrip中的SELECT id声明cur1游标,其中id>1545 order by id
读循环:循环
FETCH cur1 INTO a;
IF done THEN
LEAVE read_loop;
END IF;
update newstrip set ndate=dat where id=a;
dat=DATE_ADD(dat,INTERVAL 1 DAY);
端环 下面是mysql中的一个洞过程,用于更新下面的所有行
创建过程更新()
开始
声明日期=日期(“2010年10月16日”)
声明idd INT
为newstrip中的SELECT id声明cur1游标,其中id>1545 order by id
读循环:循环
FETCH cur1 INTO a;
IF done THEN
LEAVE read_loop;
END IF;
update newstrip set ndate=dat where id=a;
dat=DATE_ADD(dat,INTERVAL 1 DAY);
端环