当前位置: 首页 > 面试题库 >

子查询使用select语句返回超过1行的更新查询解决方案

终弘厚
2023-03-14
问题内容

您好,我有查询,其中我已使用select语句编写了更新语句。但是不幸的是,子查询返回错误会返回1行以上的错误。我知道错误即将到来。但我不知道相同的解决方案。谢谢。这是查询:

UPDATE adsetest.dashboard_widget_users
SET configuration=
  (SELECT DISTINCT ad_news_texte.headline
   FROM autodo.ad_news_texte
   INNER JOIN autodo.ad_news_oe
     ON ad_news_texte.news_id = ad_news_oe.id_ad_news
   INNER JOIN autodo.ad_news
     ON ad_news_oe.id_ad_news = ad_news.id
   WHERE ad_news.datum_archiv BETWEEN
     curdate() - INTERVAL DAYOFWEEK(curdate()) + 28 DAY AND curdate())
WHERE dsnr_yw_user = 1 AND dsnr_dashboard_widget = 1

问题答案:

当您SET configuration=(SELECT ...)对子查询使用update时,必须返回不超过一个值(一行)。如果返回多个值,如何将两行表分配给标量configuration字段。因此,您应该弄清楚为什么子查询返回多于一行的内容,并修复该子查询,或者确定多于一行的情况下选择哪个ONE值来进行更新。例如,您可以选择最大值

SELECT MAX(ad_news_texte.headline)...

或任何一个第一值

(SELECT ad_news_texte.headline)... LIMIT 1)

等等…

如果需要连接所有行并将其放入一行configureation,则可以使用GROUP_CONCAT() mysql函数:

SET configuration=(SELECT GROUP_CONCAT(DISTINCT ad_news_texte.headline) FROM ....


 类似资料:
  • 我不知道当我在Mysql中运行查询时,会出现此错误。 #1242-子查询返回超过1行 谁能帮我解决这个问题?

  • 当“事件ID”与“用户ID”匹配时,im会尝试从我的“事件”表中选择所有数据。然而,我得到一个错误1242,子查询返回超过1行。 我理解我的子查询将返回多行,因为一个用户可以参加多个事件。那么我如何使我的查询接受多行呢?

  • 子查询返回超过1行?? 下表是我想要达到的目标 这就是为什么我认为我需要使用group by来区分user_id 我已经看过了 子查询返回超过1行-MySQL 子查询返回的行数是否超过1行? 但还是不明白。 通过连接两个不同的表,我得到了下表。 谁能帮我解决这个问题?

  • 问题内容: 我正在尝试更新列中的所有记录,以便它们以“ CD”开头,例如DCE206将变为CDE206。 我正在使用上面的更新语句,但是出现以下错误 ‘子查询返回了1个以上的值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,这是不允许的。 我可以在语句中进行任何更改以实现此目的,还是需要使用游标进行调查。 我正在使用SQL Server 2000。 问题答案: 您不可能从该代码

  • 我正在尝试更新表,下面是我正在使用的查询 我还尝试了另一个查询: 测试了运行良好的select查询,不确定问题是什么,在IBMDB2中是否有所不同。

  • 问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN