MySQL процедура: результат состоял из более чем одной строки с оператором выбора - PullRequest
0 голосов
/ 25 декабря 2018

Я создаю одну процедуру для моего регулярного повторного задания.

В этом есть один шаг для вставки нескольких строк из одной таблицы во временную таблицу.

CREATE TABLE `tmpUserList` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `user_type` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
      `first_name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
      `last_name` varchar(45) COLLATE utf8_unicode_ci NOT NULL
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

    ..... some more queries.


        INSERT INTO  tmpUserList ( 
                SELECT  id, user_type,first_name,last_name,  from user  where  id in  (usersId) 
        );


    SELECT * FROM tmpUserList; // return the result

Но это даетменя ошибка: Результат состоял из более чем одной строки

1 Ответ

0 голосов
/ 25 декабря 2018

Правильный INSERT SELECT синтаксис:

INSERT INTO tmpUserList(id, user_type,first_name,last_name)
SELECT id, user_type,first_name,last_name 
FROM user  
WHERE id IN (usersId);

Если usersId содержит несколько значений, которые вы можете использовать:

WHERE FIND_IN_SET(id, usersId);  -- table scan

Связанные: Подготовленные MySQL операторы с переменным размеромсписок переменных

...