Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

Как заполнить таблицу числами от 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
3-1123103366
Silver...
2005-08-04 01:09
2005.09.18
ADODataSet.Filter --- и поле типа Boolean


10-1101874624
Sergei
2004-12-01 07:17
2005.09.18
COM/DCOM


14-1124574469
Knight
2005-08-21 01:47
2005.09.18
У вас когда-нить йогурт в руках взрывался?


14-1124687175
rentgen
2005-08-22 09:06
2005.09.18
Кому не сложно прокоментировать оформление программы?


14-1124461472
Lexer
2005-08-19 18:24
2005.09.18
Установка внутренней почты компании