Хранение результатов подготовленного оператора в виде таблицы в mysql?
Можно ли сохранить результат подготовленной таблицы в mysql ?
мой вариант использования - : Я создаю две переменные, основанные на определенных условиях исходной таблицы, а затем извлекаю рандомизированные строки, основанные на этом критерии. Поскольку у меня есть 10 таких таблиц, я должен быть 1-м, присоединившись к ним, а затем выполнить эту рандомизацию по" общим " критериям прохождения/фильтрации (см. также @total ниже, который является моим основным критерием, для каждой таблицы)
set @total=(select count(*) from tab_1 where predict_var ="4" or predict_var ="2" ) ;
set @sample= ( select @total*(70/30)) ;
PREPARE STMT FROM " SELECT * FROM tab_1 WHERE predict_var = '4' or predict_var = '2' union
(SELECT * FROM tab_1 WHERE predict_var = '0' or predict_var = '1' ORDER BY RAND() limit ? )" ;
EXECUTE STMT USING @sample;
После того, как я Выполнил это утверждение - Я хочу хранить эти строки, для последующего извлечения, предпочтительно в виде таблицы. Я хотел бы сделать что-то вроде этого
# incorrect syntax, but I would like something similar
create table tab_derived_1
select * from
EXECUTE STMT USING @sample;
Совет: +1 для дополнительного упоминания, почему это не работает с подготовленными утверждениями.
1 ответ:
Поместите таблицу create в оператор:
PREPARE STMT FROM "CREATE TABLE tab_derived_1 SELECT * FROM tab_1 WHERE predict_var = '4' or predict_var = '2' union (SELECT * FROM tab_1 WHERE predict_var = '0' or predict_var = '1' ORDER BY RAND() limit ? )" ; EXECUTE STMT USING @sample;
И если вы хотите вернуть результаты, не просто сохраните их в таблице, а просто сделайте окончательный
SELECT * FROM tab_derived_1