我就罗列两个表,第一张表显示当前组别用的,第二张是记录回查用的
当前组表team
组ID 组name 校区ID time
1 下沙1 1 20090828
2 下沙2 1 20090829
3 下沙3 1 20090831
记录回查组表team'
rowID 组ID 组name 校区ID modtime
1 1 下沙1 1 20090828
2 1 下沙1 1 20090829
3 2 下沙2 1 20090829
4 1 下沙1 1 20090831
5 2 下沙2 1 20090831
6 3 下沙3 1 20090831
问题一:如果我编辑过team表,相应的在记录回查表team'备份当前team表的数据。modtime的时间为当前修改时间,可以回查用
问题二:记录回查的时候就查team'这张表,如果我查20090830日,没有数据,也就是说当天没有修改过team,就显示20090829的组别
各位高手帮我看下,SQL怎么写??我这样做合理不,不合理给我提出意见,谢谢~~~
5 个解决方案
#1
没看懂你的描述,建议你举例说明。
#2
问题一:如果我编辑过team表,相应的在记录回查表team'备份当前team表的数据。modtime的时间为当前修改时间,可以回查用
估计你可能是想用触发器的功能。当team 表被update的时候,自动插入一条记录到 记录回查组表team'
如果是这个你可以在mysql的手册中看一下触发器的例子。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
问题二:记录回查的时候就查team'这张表,如果我查20090830日,没有数据,也就是说当天没有修改过team,就显示20090829的组别
估计你可能是想用触发器的功能。当team 表被update的时候,自动插入一条记录到 记录回查组表team'
如果是这个你可以在mysql的手册中看一下触发器的例子。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
问题二:记录回查的时候就查team'这张表,如果我查20090830日,没有数据,也就是说当天没有修改过team,就显示20090829的组别
select * from team where time<=20090830 order by time desc limit 1;
#3
我编辑team表的时候,也有可能不止编辑一个的,如果20090830我添加了一个组下沙3,接着又添加了一个组下沙4,那样,触发的时候不就在表team'里面重复添加了?
select * from team where time<=20090830 order by time desc limit 1;也有可能我好几天没编辑过的,这SQL管用吗?
select * from team where time<=20090830 order by time desc limit 1;也有可能我好几天没编辑过的,这SQL管用吗?
#4
估计你可能是想用触发器的功能。当team 表被update的时候,自动插入一条记录到 记录回查组表team'
如果是这个你可以在mysql的手册中看一下触发器的例子
update的时候也要把原来的记录插入到team'中
如果是这个你可以在mysql的手册中看一下触发器的例子
update的时候也要把原来的记录插入到team'中
#5
楼主请自行查阅一下MYSQL的官方文档中的例子。
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
delimiter |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|
delimiter ;
INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);
INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
#1
没看懂你的描述,建议你举例说明。
#2
问题一:如果我编辑过team表,相应的在记录回查表team'备份当前team表的数据。modtime的时间为当前修改时间,可以回查用
估计你可能是想用触发器的功能。当team 表被update的时候,自动插入一条记录到 记录回查组表team'
如果是这个你可以在mysql的手册中看一下触发器的例子。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
问题二:记录回查的时候就查team'这张表,如果我查20090830日,没有数据,也就是说当天没有修改过team,就显示20090829的组别
估计你可能是想用触发器的功能。当team 表被update的时候,自动插入一条记录到 记录回查组表team'
如果是这个你可以在mysql的手册中看一下触发器的例子。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
问题二:记录回查的时候就查team'这张表,如果我查20090830日,没有数据,也就是说当天没有修改过team,就显示20090829的组别
select * from team where time<=20090830 order by time desc limit 1;
#3
我编辑team表的时候,也有可能不止编辑一个的,如果20090830我添加了一个组下沙3,接着又添加了一个组下沙4,那样,触发的时候不就在表team'里面重复添加了?
select * from team where time<=20090830 order by time desc limit 1;也有可能我好几天没编辑过的,这SQL管用吗?
select * from team where time<=20090830 order by time desc limit 1;也有可能我好几天没编辑过的,这SQL管用吗?
#4
估计你可能是想用触发器的功能。当team 表被update的时候,自动插入一条记录到 记录回查组表team'
如果是这个你可以在mysql的手册中看一下触发器的例子
update的时候也要把原来的记录插入到team'中
如果是这个你可以在mysql的手册中看一下触发器的例子
update的时候也要把原来的记录插入到team'中
#5
楼主请自行查阅一下MYSQL的官方文档中的例子。
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
delimiter |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|
delimiter ;
INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);
INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);