您好,我有查询,其中我已使用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值来进行更新。例如,您可以选择最大值
SET configuration=(SELECT ...)
configuration
SELECT MAX(ad_news_texte.headline)...
或任何一个第一值
(SELECT ad_news_texte.headline)... LIMIT 1)
等等…
如果需要连接所有行并将其放入一行configureation,则可以使用GROUP_CONCAT() mysql函数:
configureation
SET configuration=(SELECT GROUP_CONCAT(DISTINCT ad_news_texte.headline) FROM ....