【发布时间】:2017-12-19 14:00:23
【问题描述】:
我尝试在 MySQL Workbench 中编写我的第一个存储过程,但不知何故它不起作用。这是我的代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `check_completeness`()
BEGIN
-- drop table
DROP TABLE IF EXISTS `check_language`;
-- create table
CREATE TABLE `check_language`(
`id` int,
`lang` varchar(8),
`count` int,
`complete` boolean
);
INSERT INTO `check_language`
(`id`, `lang`, `count`, `complete`)
VALUES
(
NULL,
(SELECT tbl_language_code from `vw_qa_envi` GROUP BY tbl_language_code),
(SELECT COUNT(tbl_language_code) from `vw_qa_envi` GROUP BY tbl_language_code),
(SELECT IF(COUNT(tbl_language_code) = 148, 1, 0) FROM `vw_qa_envi` GROUP BY tbl_language_code)
);
END
当我单独执行每个 SQL 查询时,它运行良好。但是当我尝试执行整个存储过程时,它不起作用。
我收到了error code 1242。
子查询返回多于 1 行。
【问题讨论】:
-
错误消息是您可以获得的更具体/更有用的消息之一...您的所有子查询都可以/将返回多个结果。我不知道如何帮助你,因为我不知道你想在这里做什么。
-
检查这些查询 ` (SELECT tbl_language_code from
vw_qa_enviGROUP BY tbl_language_code), (SELECT COUNT(tbl_language_code) fromvw_qa_enviGROUP BY tbl_language_code), (SELECT IF(COUNT(tbl_language_code) = 148, 1, 0) FROMvw_qa_enviGROUP BY tbl_language_code)` 分别并确保每个返回单个值 -
错误信息说明了一切。我们还能如何向您解释?运行每个子查询。然后其中一项或多项返回多于 1 行。
标签: mysql sql stored-procedures mysql-workbench