1
我试图嵌套一些查询,但到目前为止我找回错误1242:子查询返回多于1行。我想要多行,因为我正在处理一些记录。嵌套的MySQL查询w/concat和adddate
我有2个表格。一个开始日期存储在3列; yr_comm,mth_comm,day_comm。第二个表格对于许多用户有一个服务期(以年为单位),用整数表示(2.71,3.45等)。
我需要从这个开始日期(从表1),并添加服务期(从表2)来获得结束日期,但我只需要显示年份。
我有2个查询哪些工作很好,当单独时,他们导致所需的值,但我无法结合查询来获得所需的最终结果。
查询1:串联的3个开始值到日期格式
SELECT concat_ws('-', yr_comm, mth_comm, day_comm) AS date_comm
FROM table 1
查询2:转换整数yrs_service到天
SELECT format(yrs_served * 365, 0) AS days_served
FROM table 2
查询3:使用DATE_ADD函数将天服务添加到开始日期
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;
嗯,我宁愿不变量,但我想你像这样的代码,它不适用于我: SELECT(CONCAT_WS(' - ',(SELECT yr_comm,mth_comm,day_comm FROM ministry)))+ INTERVAL(SELECT MONTH(CURDATE()))DAY as date_left – user2005926