sql = "INSERT IGNORE INTO record1 (s_id,s_date,s_in_time,s_p) VALUES (%s,%s,%s,%s)"
SELECT s_id, s_date, s_in_time, s_out_time, s_p
FROM staff_attendance
WHERE staff_attendance.s_id
AND staff_attendance.s_date != record.s_id
AND record.s_date
我正在使用此查询来填充我的数据,我只希望唯一的条目进入数据库
答案 0 :(得分:0)
如果要插入选择,则应使用
INSERT IGNORE INTO record1 (s_id,s_date,s_in_time,s_p)
SELECT s_id, s_date, s_in_time, s_p
FROM staff_attendance
WHERE staff_attendance.s_id
AND staff_attendance.s_date != record.s_id
AND record.s_date
答案 1 :(得分:0)
首先,values
语句不是必需的。
第二,您有对表record
的引用,该表不存在。
我怀疑您不希望在s_id/s_date
上有任何重复(尽管这是一个猜测)。您需要对任何所需的内容都有唯一的索引/约束。因此,从此开始(如果不存在):
create index unq_record1_s_id_s_date on record1(s_id, s_date);
然后,我建议使用on duplicate key update
而不是insert ignore
。这使语句可以捕获其他类型的错误:
insert into record1 (s_id, s_date, s_in_time, s_out_time, s_p)
select sa.s_id, sa.s_date, sa.s_in_time, sa.s_out_time, sa.s_p
from staff_attendance sa
on duplicate key update s_id = values(s_id);