创建表学生
(
s_id
int(10) NOT NULL AUTO_INCRMENT,
s_roll_no
int(30),
s_name
varchar(30),
s_gender
varchar(4) 不为空,
class
int(2) 不为空,
主键(s_id
)
);
创建表attendance_date
(
今天日期
varchar(10),
主键(今天日期
)
);
创建表attendance_today
(
s_id
int(10),
s_roll_no
int(30),
s_name
varchar(30),
s_gender
varchar(4),
类
int(2),
今天日期
varchar(10),
attendance_status
varchar(2) 不为 null 默认“P”
);
分隔符$$
创建触发器 after_insertion_into_attendance_date 在 attend_date 插入后 对于每一行
begin
insert into attendance_today(s_id, s_roll_no, s_name, s_gender, class, date_today)
select * from student cross join attendance_date order by date_today, s_id;
end$$
分隔符;
插入学生
值(value)观
(1,1,'姆里杜尔库马尔','M',1),
(2,2,'哈里什·保罗','M',1),
(3,3,'伊姆蒂亚兹·侯赛因','M',1);
插入attendance_date
值(value)观
('1 月 1 日'),
('1 月 2 日');
现在, 从 attend_today 中选择 *; 每次插入后都给出重复项,有什么方法可以避免触发器内出现此类重复项? 我不是在寻找 从 attend_today 中选择不同的*; 触发器激活后。
最佳答案
这将防止插入重复值
insert into attendance_today(s_id, s_roll_no, s_name, s_gender, class, date_today)
select *
from student cross join attendance_date ad
WHERE NOT EXISTS (
SELECT null FROM attendance_today at
WHERE ad.s_id = at.s_id and ad.date_today = at.date_today
)
order by date_today, s_id;
关于mysql - 如何避免结果集中出现重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232240/