Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизКак заполнить таблицу числами от 1 до 80? Найти похожие ветки
← →
kreyl (2005-08-04 09:58) [0]Таблица с одним столбцом целых. Как ее заполнить числами от 1 до 80 - при помощи запроса, конечно, а не построчно?
Простите за чайницкий вопрос :-) Спасибо!
← →
ЮЮ © (2005-08-04 09:59) [1]>Таблица с одним столбцом целых
:)
А строки в ней уже есть?
← →
evvcom © (2005-08-04 10:04) [2]
> при помощи запроса, конечно, а не построчно?
insert into MyTable (
select 1 from dual
union
select 2 from dual
union
<и так 80 раз :)>
select 80 from dual);
:-))
← →
ЮЮ © (2005-08-04 10:07) [3]DELETE FROM MyTable
INSERT INTO MyTable
SELECT Num FROM MySuperTable WHERE Num BETWEEN 1 AND 80
если движок поддерживает, можно одним оператором
SELECT Num FROM MySuperTable WHERE Num BETWEEN 1 AND 80
INTO MyTable
где
MySuperTable - заранее приготовленная таблица с одни столбцом, куда ПОСТРОЧНО (нет другого пути) добавлены записи от 1 до максимального в твоей области применения
← →
Zz_ (2005-08-04 11:44) [4]
declare @t table (A int)
insert into @t select 1 + A*25+B*5+C from
(select A = 0 union all select 1 union all select 2 union all select 3 union all select 4)a,
(select B = 0 union all select 1 union all select 2 union all select 3 union all select 4)b,
(select C = 0 union all select 1 union all select 2 union all select 3 union all select 4)c
where A*25+B*5+C < 80
select * from @t order by 1
← →
ЮЮ © (2005-08-04 11:48) [5]>Zz_ (04.08.05 11:44) [4]
А вдруг это LocalSQL ?
← →
Ольга (2005-08-04 11:51) [6]
> при помощи запроса, конечно, а не построчно
Как не извращайся, а сервер все равно будет делать это построчно.
Так что for i:=1 to 80 do insert... самый лучший вариант.
← →
Sergey13 © (2005-08-04 11:57) [7]2[6] Ольга (04.08.05 11:51)
Зато команда серверу передастся всего 1 раз.
← →
Ольга (2005-08-04 12:33) [8]
> [7]
Не стоит овчинка выделки, разве что сеть у kreyl совсем дохлая, а так и тот и другой вариант будут работать одинаково быстро.
← →
Sergey13 © (2005-08-04 12:38) [9]2 [8] Ольга (04.08.05 12:33)
> Не стоит овчинка выделки
Для такой задачи программу (или запрос) писать - вообще нонсенс. Тем более если не знаешь как. 8-)
← →
AndrewK (2005-08-04 17:05) [10]Ну вот решение для MS SQL Server 2000. Думаю идею можно переложить и на други движки.
Делаем функцию:
CREATE FUNCTION IntListGet (@Start int, @Stop int)
RETURNS @Return TABLE (Value int)
AS
BEGIN
declare @i int
set @i=@Start
while @i<=@Stop
begin
insert @Return select @i
set @i=@i+1
end
RETURN
END
Поучаем нужный датасет:
select
*
from
dbo.IntListGet (1, 80)
← →
EthernalWonderer (2005-08-05 23:18) [11]А вот решение для Oracle:
Insert Into MyTable Select RowNum From All_Objects Where RowNum < 81
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c