我有一个简单的临时表和一个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;
错误地出现了:
SQL错误(1064):您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在#WHED(@FolderId> 0)DO附近使用正确的语法 插入FolderStructure 选择`文件夹`.id` '第1行
我不知道我在查询中做错了什么,我已经习惯了MSSQL,这可能就是原因。数据肯定在表格中,如果我在while循环外运行select,它可以正常工作。
有什么建议吗?
答案 0 :(得分:2)
它不起作用,因为MySQL不支持像你问题中那样的即席查询中的循环。您必须创建一个存储过程或函数才能编写WHILE LOOP。
我知道你在想什么 - 是的,它很糟糕。在T-SQL中执行此操作非常简单!