簡體   English   中英

選擇內部插入語句-MySQL游標

[英]Select Inside Insert Statement - MySQL Cursors

我嘗試了一些,但找不到解決方案,以某種方式設法獲得了這個結果。

這是查詢:

DELIMITER ##
CREATE PROCEDURE test1(start_date DATE,end_date DATE)
BEGIN
   DECLARE done INT DEFAULT FALSE;   
   DECLARE a INT;
   DECLARE present INT;
   DECLARE total INT;
   -- Declare the cursor
   DECLARE id CURSOR
   FOR
   SELECT staff_id FROM ost_staff;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
   -- Open the cursor
   DROP TEMPORARY TABLE IF EXISTS reports;
   CREATE TEMPORARY TABLE IF NOT EXISTS reports
   (
    staff_id INT(10),
    present INT(10),
total INT(10)
   );
   OPEN id;
   read_loop: LOOP
   FETCH id INTO a;
   IF done THEN
   LEAVE read_loop;
   END IF;
   INSERT INTO reports(staff_id,present,total)
   SELECT (COUNT(I.interval_start)) AS present, DATEDIFF(DATE_ADD(end_date,INTERVAL 1     DAY),start_date) AS total
    FROM effort_frequency E 
RIGHT OUTER JOIN time_intervals I ON I.interval_start = E.log_date 
AND E.staffid=a AND E.log_date BETWEEN start_date AND end_date
LEFT OUTER JOIN ost_holidays H ON H.holiday_date = I.interval_start
WHERE DATE_FORMAT(I.interval_start,'%a') = 'Sun' OR H.holiday_date = I.interval_start OR E.total_effortspent IS NOT NULL;

   -- Close the cursor   
   END LOOP;
   CLOSE id;
END ##

我得到以下結果:

+----------+-----------------+
| staff_id | present | total |
+----------+---------+-------+
|  (NULL)  |   23    |  24   |
|  (NULL)  |   22    |  24   |
+----------+---------+-------+

我的staff_id為(NULL),如何獲得staff_id? 我嘗試在insert語句中使用聲明的變量'a',但是那時我只有staff_id,沒有得到其他2個字段,我無法從insert語句中的select里面得到staff_id,因為存在一些問題。

現在,我需要將變量'a'中的staff_id插入該臨時表中。

注意:我真的是這個存儲過程的新手,但是直到現在仍然可以通過某種方式進行管理,如果我能詳細了解如何使用“插入內部選擇”(包括針對此問題的解決方案),那就很好了。

嘗試這個 -

SELECT a, (COUNT(I.interval_start)) AS present, DATEDIFF(DATE_ADD(end_date,INTERVAL 1     DAY),start_date) AS total

INSERT需要三個字段,但是SELECT語句僅選擇兩個: presenttotal

嘗試:

 SELECT E.staffid, (COUNT(I.interval_start)) 
 AS present, DATEDIFF(DATE_ADD(end_date,INTERVAL 1 DAY),start_date) AS total

暫無
暫無

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

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