2011-01-28 2 views
0

Я хочу автоматически создавать резервные копии базы данных, поэтому у меня есть две базы данных: одна со всеми данными и другая с отношением каждой таблицы -i.e. 20% - на основе столбца.Как автоматически резервировать соотношение таблицы на основе одного столбца?

+0

Пожалуйста, будьте более конкретными. Каково соотношение каждой таблицы? – ThomasMcLeod

+0

Я имею в виду отношение данных в таблице –

+0

Итак, вы хотите, скажем, 20% строк из каждой таблицы? Я могу понять это, хотя я бы отговорил вас от этого. То, о чем я не уверен, - это то, что вы подразумеваете под «на основе столбца». –

ответ

0

Это моя первая попытка.

create table t1 (
id integer primary key, 
val integer not null); 

create table t2 (
id integer primary key, 
val integer not null); 

insert into t1 values (1,1000); 
insert into t1 values (2,1000); 
insert into t1 values (3,1000); 
insert into t1 values (4,1000); 
insert into t1 values (5,1000); 
insert into t1 values (6,1000); 
insert into t1 values (7,1000); 
insert into t1 values (8,1000); 
insert into t1 values (9,1000); 
insert into t1 values (10,1000); 
insert into t1 values (11,1000); 

insert into t2 
select id, val 
from t1 
where (val >= 1000) 
    and (rownum <= cast((0.2 * (select count(*) from t1)) as integer)); 
+0

Мой первый ответ: «Неизвестный столбец« rownum »в предложении WHERE» – Mchl

+0

@Mchl: «rownum» - синтаксис Oracle. Я думаю, что синтаксис MySQL использует «LIMIT» в этом конкретном контексте. У меня нет MySQL для тестирования. –

+0

@Mchl: И вам, вероятно, придется использовать что-то вроде 'LIMIT ' вместо 'LIMIT <= '. –