2017-08-31 15 views
0

私は単純なテンポラリテーブルを持っていて、可変値をチェックして上記テーブルにデータを挿入するwhileループを持っています。ここに私のクエリです:whileループは一時テーブルデータを使用していません

SET @FolderId = 7; 

CREATE TEMPORARY TABLE FolderStructure 
(
id int, 
name varchar(255) 
); 

WHILE (@FolderId > 0) DO 
INSERT INTO FolderStructure 
SELECT `folders`.`id`, 
     `folders`.`folder_name` 
FROM `folders` 
WHERE `folders`.`id` = @FolderId; 

SET @FolderId = (SELECT `folders`.`parent_folder` 
FROM `folders` 
WHERE `folders`.`id` = @FolderId); 
END WHILE; 

SELECT * FROM FolderStructure; 

DROP TABLE FolderStructure; 

それはで、アウトerroringだ:

SQLエラー(1064):あなたは、あなたのSQL構文でエラーが発生しています。私は近くに使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいライン1

で 'WHILE(@FolderId> 0) INSERT INTO FolderStructureがfolders`.`id` `SELECT ください'私がクエリで何が間違っているのか分かりませんが、私はMSSQLに慣れています。それが理由かもしれません。データは明らかにテーブルにあり、whileループの外側でselectを実行するとうまくいきます。

アドバイスはありますか?

答えて

1

MySQLは質問にあるようなアドホッククエリのループをサポートしていないため、動作しません。 WHILE LOOPを書くには、ストアドプロシージャまたは関数を作成する必要があります。

Reference 1

Reference 2

私はあなたが考えているものを知っている - はい、それは吸います。これをT-SQLで行うのはとても簡単です!

+0

うわー、どうして私はそれを逃しましたか?あまりにも多くの開発!ありがとう:)それは間違いなくTSQLで簡単です –

関連する問題