mysql - 如何避免结果集中出现重复值?

标签 mysql duplicates database-trigger

创建表学生 ( 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/

相关文章:

java - 使用连接池后仍然出现 You can't run on a Closed ResultSet 错误

php - 表行字段的mysql if else语句

java - 如何从 ArrayList 中获取重复值?

mysql - 我想编写触发器来限制数值插入

mysql - Django 模型中的大整数字段

php - mysql数据库中的倒计时字段值

java - Spring 和 Hibernate 的重复关键问题 - 需要帮助

sql - 检查 Id 为 Identity 的表中的重复记录

MySql插入数据到另一个表后触发

sql - 这个查询触发器有什么问题?