Проблема с SELECT INTO с использованием локальных переменных - PullRequest
1 голос
/ 23 января 2009

Мне нужно создать запрос SQL, чтобы вставить некоторые данные в таблицу на основе результатов запроса SELECT в локальную переменную. Моя платформа БД - MySQL 5.1, но я не думаю, что это должно иметь значение здесь. По сути, я хочу сделать следующее:

SELECT id INTO var_name FROM table1 WHERE some_column='something' LIMIT 1;
INSERT INTO table2 (`number`) VALUES (@var_name);

Однако я не могу пройти первый оператор, так как я получаю сообщение об ошибке «Необъявленная переменная var_name». Я также пытался поместить оператор в блок BEGIN / END и хранимую процедуру, но затем я сталкиваюсь с другими ошибками, которые указывают только на наличие ошибки в строке SELECT. Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 23 января 2009

Вам нужно объявить @var_name, а затем выбрать @var_name. Я не очень хорошо знаю MySQL, но попробую что-то вроде этого:

declare @var_name varchar(100);
SELECT id INTO @var_name FROM table1 WHERE some_column='something' LIMIT 1;
INSERT INTO table2 (`number`) VALUES (@var_name);

Редактировать: Возможно, лучший способ сделать это:

insert into table2 ('number')
select id 
from table1 
where some_column = 'something' LIMIT 1;

Это исключает необходимость в переменной и будет намного быстрее и проще для понимания в будущем.

2 голосов
/ 23 января 2009

Попробуйте

INSERT INTO table2 (`number`)
SELECT id FROM table1 WHERE some_column='something' LIMIT 1
0 голосов
/ 10 декабря 2012
CREATE TABLE table_name
AS  
SELECT ...(your select)
...