【问题标题】:Sub query returning multi values in oracle子查询在oracle中返回多个值
【发布时间】:2011-11-02 02:57:24
【问题描述】:

我的表中有一些空值,我必须从其他表中更新这些值。我正在使用以下查询,但子查询返回多个值。

update student st 
set n_id=(select n_id 
          from class cl 
          where st.uid=cl.uid 
          and ( cl.start_date='31-jan-2011' or cl.start_date='28-feb-2011') 
          and st.n_id is null);

如何更新我的字段。帮我找出来。谢谢。

【问题讨论】:

  • 你需要问问自己,为什么子查询返回的值多于1?如果您尝试将行设置为特定值,则显然只需要返回一个(且正确的)值,因此您需要查看当前返回的内容并修复您的 where 子句以将其限制为您真正想要的.

标签: sql oracle subquery sql-update


【解决方案1】:

您可以处理逻辑或添加语句

and rownum = 1

那么您的子查询将始终只返回一行(第一行.. 如果存在)

【讨论】:

  • 这是正确的。 但是,@Samurai 在使用这种方法之前请仔细考虑并确保在该子查询返回的所有值中,您真的不在乎使用哪个值。如果您确实在乎,那么您需要找出哪个是“正确”的值并更改您的子查询以仅返回那个值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 2019-09-26
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多