SQL-44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。...

本文介绍了一种在SQL中使用REPLACE语句替换特定行数据的方法,具体为将id=5且emp_no=10001的行数据替换为id=5且emp_no=10005,同时保持其他数据不变。通过一个具体的例子展示了如何操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。
CREATE TABLE IF NOT EXISTS titles_test (
id int(11) not null primary key,
emp_no int(11) NOT NULL,
title varchar(50) NOT NULL,
from_date date NOT NULL,
to_date date DEFAULT NULL);

insert into titles_test values ('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
SQL:
replace into titles_test 
select 5,10005,title,from_date,to_date
from titles_test
where id=5;

  这样不会写死

转载于:https://www.cnblogs.com/kexiblog/p/10736810.html

执行以下SQL,存在on子句的相同项,却还是新增一笔,请查找原因并提供修改错误后完整SQL:MERGE INTO DEPT_DAILY_SUMMARY T USING ( WITH EMP_BASE AS( SELECT SEG_SEGMENT_NO,ID,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3,ID_NO_SZ,NAME_SZ, SEX,JOB_ID,JD_MASTER_DESC,INDATE,OUTDATE FROM V_DEPT_EMP V WHERE /*DEPT_NO1='TC0300' AND DEPT_NO3 NOT IN('TC0300','TC0310','TC0320')*/ (TEMP_COMPANY NOT IN ('Q366_Z','Q356_S') OR TEMP_COMPANY IS NULL) AND (OUTDATE>TRUNC(SYSDATE) OR OUTDATE IS NULL) AND INDATE<=TRUNC(SYSDATE) ), ATTEND AS( SELECT SEG_SEGMENT_NO,ID,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3,E.ID_NO_SZ,NAME_SZ, SEX,JOB_ID,JD_MASTER_DESC,INDATE,OUTDATE,SHIFT_ID,SHIFT_NAME,HOLIDAY,INACTUAL FROM EMP_BASE E LEFT JOIN HCP.EMP_CARDING_TEMP A ON A.PSN_ID=E.ID WHERE A.INACTUAL IS NOT NULL AND A.CDAY>=TRUNC(SYSDATE) AND A.CDAY<TRUNC(SYSDATE)+1 ), EMP_ATTEND AS ( SELECT SEG_SEGMENT_NO,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3,HOLIDAY, COUNT(ID_NO_SZ) WORK_COUNT FROM ATTEND GROUP BY SEG_SEGMENT_NO,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3,HOLIDAY ), LEAVE_OVER8 AS( SELECT T.PSN_ID,HCP.SF_BPM_ID_GET(T.PSN_ID, 9) ID_NO_SZ,HCP.SF_BPM_ID_GET(T.PSN_ID, 7) NAME_SZ,HCP.SF_BPM_ID_GET(T.PSN_ID, 2) DEPT_NO3,HCP.SF_BPM_ID_GET(T.PSN_ID, 3) DEPT_NAME3,BEGINTIME,ENDTIME, (SELECT ABSENCE_NAME FROM HR_ABSENCE_TYPE WHERE SEG_SEGMENT_NO = 'A001' AND ABSENCE_TYPE_ID = REASON) ABSENCE_NAME,HOUR,DAYS,MINS,REMARK FROM HR_ABSENCE T WHERE HOUR>=8 --AND TRUNC(SYSDATE) BETWEEN TRUNC(BEGINTIME) AND TRUNC(ENDTIME) AND BEGINTIME<=TRUNC(SYSDATE)+1 AND ENDTIME>=TRUNC(SYSDATE) AND T.IS_ACTIVE = 'Y' ), EMP_ATTEND_L AS ( SELECT SEG_SEGMENT_NO,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,A.DEPT_NO3,A.DEPT_NAME3,HOLIDAY,WORK_COUNT,COUNT(ID_NO_SZ) LEAVE_CNT FROM EMP_ATTEND A LEFT JOIN LEAVE_OVER8 B ON A.DEPT_NO3=B.DEPT_NO3 GROUP BY SEG_SEGMENT_NO,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,A.DEPT_NO3,A.DEPT_NAME3,HOLIDAY,WORK_COUNT ), EMP_CNT AS ( SELECT SEG_SEGMENT_NO,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3,COUNT(ID_NO_SZ) EMP_COUNT FROM EMP_BASE GROUP BY SEG_SEGMENT_NO,PLANT_NO,PLANT_NAME,DEPT_NO1,DEPT_NAME1,DEPT_NO2,DEPT_NAME2,DEPT_NO3,DEPT_NAME3 )SELECT A.SEG_SEGMENT_NO,A.PLANT_NO,A.PLANT_NAME,A.DEPT_NO1,A.DEPT_NAME1,A.DEPT_NO2,A.DEPT_NAME2,A.DEPT_NO3,A.DEPT_NAME3,B.HOLIDAY,A.EMP_COUNT,B.WORK_COUNT,B.LEAVE_CNT FROM EMP_CNT A LEFT JOIN EMP_ATTEND_L B ON A.PLANT_NO=B.PLANT_NO AND A.DEPT_NO3=B.DEPT_NO3 ) S ON (T.CDATE = TRUNC(SYSDATE) AND T.PLANT=S.PLANT_NO AND T.DEPT_NO1=S.DEPT_NO1 AND T.DEPT_NO2=S.DEPT_NO2 AND T.DEPT_NO3=S.DEPT_NO3 AND T.HOLIDAY=S.HOLIDAY) WHEN MATCHED THEN UPDATE SET T.TOTAL_EMP = S.EMP_COUNT,T.WORK_EMP = S.WORK_COUNT,T.LEAVE_EMP = S.LEAVE_CNT,T.UPDATE_TIME=SYSDATE WHERE T.TOTAL_EMP <> S.EMP_COUNT AND T.WORK_EMP <> S.WORK_COUNT AND T.LEAVE_EMP <> S.LEAVE_CNT WHEN NOT MATCHED THEN INSERT VALUES (TRUNC(SYSDATE),S.PLANT_NO,S.DEPT_NO1,S.DEPT_NAME1,S.DEPT_NO2,S.DEPT_NAME2,S.DEPT_NO3,S.DEPT_NAME3,S.EMP_COUNT,S.WORK_COUNT,S.LEAVE_CNT,SYSTIMESTAMP,SYSTIMESTAMP,S.PLANT_NAME,S.SEG_SEGMENT_NO,S.HOLIDAY);
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值