0

MySQL データセットで for ループを使用するには?

FOR x IN (SELECT column FROM table_name WHERE column_2 = input_val) 
LOOP
    sum_total := sum_total + x.column ;
END LOOP;

これは、オラクルでデータセットをループするために使用した例です。

これは MySql でどのように達成できますか?

4

2 に答える 2

3

まったくループしないのはどうですか。やっぱりSQLです。

SELECT SUM(`column`) total
  FROM table_name 
  WHERE column_2 = <input_val>

それ以外の場合は使用CURSOR

さて、同等のループ使用CURSORは次のようになります

DELIMITER $$
CREATE PROCEDURE sp_loop(IN input_val INT)
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE sum_current, sum_total INT DEFAULT 0;
  DECLARE cur1 CURSOR FOR SELECT column1 FROM table_name WHERE column2 = input_val;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  OPEN cur1;

  read_loop: LOOP
    FETCH cur1 INTO sum_current;
    IF done THEN
      LEAVE read_loop;
    END IF;
    SET sum_total = sum_total + sum_current;
  END LOOP;

  CLOSE cur1;
  SELECT sum_total;
END$$
DELIMITER ;

ここにSQLFiddleがあります

于 2013-05-28T04:45:15.807 に答える