簡體   English   中英

將行插入 MySQL 表的查詢結果插入一個字段,SQL 函數將返回值插入其他字段

[英]Insert row into MySQL table result from query into one field and SQL function returned values into other fields

是否有可能在一個查詢中將一行插入到 MYSQL 表中以及從 MySQL 函數返回的其他字段中的值?

例如,我有下表:

CREATE TABLE monthly_hours
(
  ProjectID int,
  Year int,
  Month int,
  monthTotalTime int
);
  • 它顯示給定年份中給定月份的項目工作時間。

我有一個查詢,它匯總了一個項目所花費的總時間:

INSERT INTO time_monthly_hours ( `ProjectID`, `monthTotalTime` ) 
 SELECT jiraissue.PROJECT, SUM(worklog.timeworked) 
 FROM worklog, jiraissue 
 WHERE worklog.issueid = jiraissue.ID 
  AND jiraissue.PROJECT = 13262 
  AND worklog.startdate BETWEEN '2017-01-01 00:00:00' AND '2017-01-18 23:59:59';

我想將 projectID 和 monthTotalTime 插入到monthly_hours 表中的一行中,包括月份和年份。

我試過:

INSERT INTO time_monthly_hours ( ProjectID, monthTotalTime,  Year, Month ) VALUES
( 
 SELECT jiraissue.PROJECT, SUM(worklog.timeworked) 
 FROM worklog, jiraissue 
 WHERE worklog.issueid = jiraissue.ID 
  AND jiraissue.PROJECT = 13262 
  AND worklog.startdate BETWEEN '2017-01-01 00:00:00' AND '2017-01-18 23:59:59' 
), 
  MONTH(CURRENT_DATE()), YEAR(CURRENT_YEAR() );

但這是一個無效的查詢。 我已經搜索了很多,但找不到這樣的解決方案來同時將 SQL 查詢結果和來自 SQL 函數的值放入一行。

請你指教。 我需要在 MySQL 級別執行此操作,而不是通過更高級別的工具。 謝謝你。

演示更新:

(問題內容不變)

  • 我嘗試根據 BeNice 的要求增強格式以使其更具可讀性
  • 我稍微更正了標題中的語法(需要對字段使用復數),第一行問題中的“queryto”也被更正為 query to。 謝謝!

您的查詢無效,因為您沒有正確使用括號。 當您使用INSERT...VALUES() ,語法必須是:

INSERT INTO <table> (col, col, col, col) VALUES (val, val, val, val);

但是您基本上有無效的語法,例如:

INSERT INTO <table> (col, col, col, col) VALUES (val, val), val, val;

使用一個返回兩列的子查詢還有另一個問題。 不能用於代替 INSERT 語句的標量值。

此外,您將 MONTH() 表達式與 Year 列匹配,並將 YEAR() 表達式與 Month 列匹配。

但它比你制作它更簡單。 您可以將常量表達式放入 SELECT,因此 SELECT 有四列。

INSERT INTO time_monthly_hours ( ProjectID, monthTotalTime,  Year, Month )     
 SELECT jiraissue.PROJECT, SUM(worklog.timeworked),
  YEAR(CURRENT_DATE()), MONTH(CURRENT_DATE())
 FROM worklog, jiraissue 
 WHERE worklog.issueid = jiraissue.ID 
  AND jiraissue.PROJECT = 13262 
  AND worklog.startdate BETWEEN '2017-01-01 00:00:00' AND '2017-01-18 23:59:59' 

當您使用INSERT...SELECT您不需要VALUES關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM