在MySQL中使用Join和Insert语句
我有一个这样的insert语句在MySQL中使用Join和Insert语句,mysql,Mysql,我有一个这样的insert语句 INSERT INTO T_WorkContents ( user_id, working_date, working_start_time, working_end_time, break_time, holiday_mark, overtime_hours, overtime_reason, work_detail,
INSERT INTO T_WorkContents ( user_id, working_date, working_start_time,
working_end_time, break_time, holiday_mark,
overtime_hours, overtime_reason, work_detail,
remarks, regist_user, regist_date,
update_user, update_date )
VALUES ( '00005', '2015-02-05', '8:0',
'17:0', '0:0', '0',
'0:0', NULL, NULL,
NULL, '00005', current_timestamp(),
'00005', current_timestamp()
);
我想通过在user\u id
上将表workcontent与表用户信息联接,检查插入新行时用户是否已被删除,条件是其中userinfo.delete\u flag=0
有什么办法吗?您可以在存在的地方使用。试试下面
INSERT INTO funds (field1, field2)
values (x, xx)
WHERE EXISTS (
SELECT *
FROM table
WHERE userid = your_user_id
);
我不确定我是否理解你的问题。但是,如果您只希望在相应的用户存在并且在其他表中标记为未删除时执行插入,则应该可以:
INSERT INTO T_WorkContents ( user_id, working_date, working_start_time,
working_end_time, break_time, holiday_mark,
overtime_hours, overtime_reason, work_detail,
remarks, regist_user, regist_date,
update_user, update_date )
SELECT '00005', '2015-02-05', '8:0',
'17:0', '0:0', '0',
'0:0', NULL, NULL,
NULL, '00005', current_timestamp(),
'00005', current_timestamp()
FROM userinfo ui
WHERE ui.user_id = '00005' && ui.delete_flag = 0
如果
userinfo
不包含user\u id
等于00005
且delete\u标志设置为0的行,则select将不返回任何行,insert查询将不影响任何行。我不确定是否理解该问题。如果用户被删除,则您不想执行插入查询?您的意思是,如果用户已经存在,您想阻止插入吗?@Cyclone,是的,与您的想法非常相似,只是用户仍然能够插入查询,但影响的行数为0。