Хранение результатов подготовленного оператора в виде таблицы в 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 4

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