带concat和adddate的嵌套MySQL查询

带concat和adddate的嵌套MySQL查询,mysql,nested,concat-ws,Mysql,Nested,Concat Ws,我试图嵌套一些查询,但到目前为止,我得到了错误1242:子查询返回的行数超过1行。我想要不止一行,因为我正在处理许多记录 我有两张桌子。一个具有存储在3列中的开始日期;yr_comm、mth_comm、day_comm。第二个表中的服务期以年为单位,适用于多个用户,表示为整数2.71、3.45等 我需要从表1中获取该开始日期,并在表2中添加服务期限以获得结束日期,但我只需要显示年份 我有两个查询,它们在分开时工作得很好,它们会产生所需的值,但是我在组合查询以获得所需的最终结果时遇到困难 查询1:

我试图嵌套一些查询,但到目前为止,我得到了错误1242:子查询返回的行数超过1行。我想要不止一行,因为我正在处理许多记录

我有两张桌子。一个具有存储在3列中的开始日期;yr_comm、mth_comm、day_comm。第二个表中的服务期以年为单位,适用于多个用户,表示为整数2.71、3.45等

我需要从表1中获取该开始日期,并在表2中添加服务期限以获得结束日期,但我只需要显示年份

我有两个查询,它们在分开时工作得很好,它们会产生所需的值,但是我在组合查询以获得所需的最终结果时遇到困难

查询1:将3个开始值连接为日期格式

SELECT concat_ws('-', yr_comm, mth_comm, day_comm) AS date_comm
FROM table 1
查询2:将整型yrs_服务转换为天

SELECT format(yrs_served * 365, 0)  AS days_served
FROM table 2
查询3:使用日期添加功能将天数服务添加到开始日期

SELECT date_add(date_comm, INTERVAL days_served DAY) AS date_left
有人能建议我如何实现上述目标吗?非常感谢

编辑-以下是我正在处理的完整查询:

SELECT prime_minister.pm_name, yr_comm, party, ADDDATE(
    (SELECT CONCAT_WS('-', yr_comm, mth_comm, day_comm) FROM ministry), INTERVAL 
    (SELECT FORMAT(yrs_served * 365, 0) FROM prime_minister) YEAR) AS date_left
FROM ministry JOIN prime_minister USING (pm_name)
WHERE party NOT LIKE '%labor%'
AND prime_minister.pm_name = ministry.pm_name
ORDER BY pm_name;

您可以使用用户变量

SET @date = CONCAT_WS('-', 2012,1,1);   -- paste your query here
SET @toAdd = (SELECT MONTH(CURDATE())); -- paste your query here
SELECT DATE_ADD(@date, INTERVAL @toAdd DAY) AS date_left
这和

SET @date = CONCAT_WS('-', 2012,1,1);   -- paste your query here
SET @toAdd = (SELECT MONTH(CURDATE())); -- paste your query here
SELECT @date + INTERVAL @toAdd DAY AS date_left
或者不使用更长的变量

SELECT (CONCAT_WS('-', 2012,1,1)) + INTERVAL (SELECT MONTH(CURDATE())) DAY AS date_left

嗯,我希望没有变量,但我试过这样的代码,它对我不起作用:选择CONCAT_WS'-',选择yr_comm,mth_comm,day_comm FROM ministry+INTERVAL选择MONTHCURDATE day作为date_left