Sql 在oracle中更新多行
我想使用硬编码值更新表值。以下是我的代码:Sql 在oracle中更新多行,sql,oracle,plsql,Sql,Oracle,Plsql,我想使用硬编码值更新表值。以下是我的代码: BEGIN UPDATE emp_table SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'), WHERE emp_id = '78629160'; UPDATE emp_table SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:
BEGIN
UPDATE emp_table
SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),
WHERE emp_id = '78629160';
UPDATE emp_table
SET expiry_dt = TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),
WHERE emp_id = '78629160';
END
我想在单个update语句中完成它。谁能告诉我解决办法吗
UPDATE emp_table SET expiry_dt = TO_DATE
('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),
WHERE emp_id IN ('78629160','111020102','88888888');
我应该帮你。使用不同的员工id编辑IN子句,因为您的id相同
UPDATE emp_table
SET expiry_dt =
CASE
WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
END
WHERE emp_id IN ('78629160', '78629161')
我应该帮你。使用不同的员工id编辑IN子句,因为您的id相同
UPDATE emp_table
SET expiry_dt =
CASE
WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
END
WHERE emp_id IN ('78629160', '78629161')
更新emp_表
设置到期日_dt=
案例
当emp_id='78629160'时,则截止日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
当emp_id='78629161'时,则截止日期('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
终止
其中emp_id位于('78629160'、'78629161')
我假设您有两次相同的ID只是一个复制粘贴错误,就像两个日期相同一样
UPDATE emp_table
SET expiry_dt =
CASE
WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
END
WHERE emp_id IN ('78629160', '78629161')
顺便问一下:什么数据类型是emp\u id
?如果是数值类型,请去掉文字的单引号(不应引用数值文字)。它们将阻止在该列上使用索引
更新emp_表
设置到期日_dt=
案例
当emp_id='78629160'时,则截止日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
当emp_id='78629161'时,则截止日期('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
终止
其中emp_id位于('78629160'、'78629161')
我假设您有两次相同的ID只是一个复制粘贴错误,就像两个日期相同一样
UPDATE emp_table
SET expiry_dt =
CASE
WHEN emp_id = '78629160' THEN TO_DATE('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
WHEN emp_id = '78629161' THEN TO_DATE('21.10.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS')
END
WHERE emp_id IN ('78629160', '78629161')
顺便问一下:什么数据类型是
emp\u id
?如果是数值类型,请去掉文字的单引号(不应引用数值文字)。它们将阻止在该列上使用索引 开始更新emp\u表集到期日\u dt=TO\u日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),--为什么在此处使用'??
其中emp_id='78629160'
开始将emp表格集到期日期更新为日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 其中emp_id='78629160'; 结束 它在我的机器上运行,没有任何错误和问题。。并给出了预期的结果。。
请不要使用“,”再试一次 开始更新emp\u表集到期日\u dt=TO\u日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS'),--为什么在此处使用'?? 其中emp_id='78629160' 开始
将emp表格集到期日期更新为日期('21.09.2009:00:00:01','DD.MM.YYYY:HH24:MI:SS') 其中emp_id='78629160'; 结束 它在我的机器上运行,没有任何错误和问题。。并给出了预期的结果。。
请不要使用“,”再试一次 你能澄清一下吗?您是要为单个emp_id更新多列,还是为多个emp_id更新单列?在您的示例中,UPDATE语句是相同的。我不明白-为什么要以相同的方式更新同一行两次?@nonnb,以便它保持更新,当然:)您能澄清一下吗?您是要为单个emp_id更新多列,还是为多个emp_id更新单列?在您的示例中,UPDATE语句是相同的。我不明白-为什么要以相同的方式更新同一行两次?@nonnb,以便它保持更新,当然:)为什么您建议使用CASE语句?我对这个问题的解释是OP希望在一条语句中为每一行更新两行不同id的日期值。也许这种理解是错误的,为什么您建议使用CASE语句呢?我对这个问题的解释是,OP希望在一个语句中为每一行更新具有不同id的两行,使其具有不同的日期值。也许这种理解是错误的我怀疑他在update语句中编辑了多个列,忘记了省略逗号。我怀疑他在update语句中编辑了多个列,忘记了省略逗号。