2015-04-01 110 views
1

你好,我叫MySQL查詢選擇控制檯(或在phpMyAdmin SQL CMD)如何在mySQL查詢中爲每個結果插入記錄?

SELECT HF, ID FROM AH WHERE HF !=0 GROUP BY HF; 

這一點,我需要從之前的每個返回行中執行命令後選擇

foreach 
    IF (SELECT COUNT(*) FROM `TOT` WHERE `ID` = @selectedID AND `Uto` = @selectedHF) = 0 THEN  
     INSERT INTO `TOT` (`ID`, `HF`) VALUES (@selectedID, @selectedHF); 
    END IF; 
endforeach; 

我該怎麼做「foreach」循環在mysql中?

+0

[MySQL Cursors](http://www.mysqltutorial.org/mysql-cursor/)應該是你正在尋找的。 – SaschaM78 2015-04-01 15:19:47

+0

遊標會完成任務,但是[INSERT INTO ..... SELECT](http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-select-into-table.html)的樣子就像它也可能完成目標一樣。遊標一般不好用,他們可以避免的地方 – Ghost 2015-04-01 15:34:55

回答

0

您可以使用單個查詢insert . . . select進行此操作。不需要循環,但你確實想檢查是否存在:

INSERT INTO `TOT` (`ID`, `HF`) 
    SELECT ID, HF 
    FROM AH a 
    WHERE HF <> 0 AND 
      NOT EXISTS (SELECT 1 FROM TOT WHERE TOT.ID = a.ID AND TOT.UTO = @selectedHF) 
    GROUP BY HF; 
+0

嗨戈登。感謝您的回覆。我chandeg'Uto' = HF到'Uto' = @selectedHF - 它會影響你的查詢嗎? – peter 2015-04-01 15:26:27

+0

@peter。 。 。不,它不應該。 – 2015-04-01 17:54:07

相關問題