簡體   English   中英

在MySQL中使用Join和Insert語句

[英]Using Join and Insert Statement in MySQL

我有這樣的插入語句

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()
);

我想通過將table workcontent與user_id上的表用戶信息一起加入來插入新行來檢查用戶是否已被刪除,條件是where userinfo.delete_flag = 0

有什么辦法嗎?

您可以使用WHERE EXISTS。 試試以下

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_id等於00005delete_flag設置為0的行,則select將不返回任何行,而insert查詢將不會影響任何行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM