Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конкретная запись из таблицы / 17 сообщений из 17, страница 1 из 1
07.08.2002, 10:19:07
    #32041406
Конкретная запись из таблицы
Дамы и Господа.
Возникла просто острейшая необходимость взять посредством SQL-запроса конкретную запись из таблицы.
Т.е.:
Есть таблица T.
В ней - 345 записей (например)
Задача: в запросе взять одну строку(запись).
Вариант с Id - полем не пойдет, так как нужно брать не мо номеру ID а по шагу(курсору), т.е. 1ая запись может иметь ID=3, так как до этого 1 и 2 были удалены. Но взять нужно именно ее в качестве 1ой.

Т.е. резюмируя, брать нужно вроде как по rowcout..
Есть идеи?
Спасибо.
...
Рейтинг: 0 / 0
07.08.2002, 10:28:18
    #32041407
bitof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
use cursor
...
Рейтинг: 0 / 0
07.08.2002, 10:32:22
    #32041409
Max_rv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
select * from bla-bla-bla t1
inner join
(
select t1.id, count(t2.id) as count_id from bla-bla-bla t1 cross
join bla-bla-bla t2
where
t1.id>=t2.id
group by t1.id
) t2
on t1.id=t2.id where t2.count_id=N-записи

А ваще взять конкретную запись ..
По-моему можно обойтись без этого ...
...
Рейтинг: 0 / 0
07.08.2002, 10:33:51
    #32041410
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Загрузите данные во временную таблицу с дополнительным столбцом идентити, он будет содержать истинный порядковый номер записи.
...
Рейтинг: 0 / 0
07.08.2002, 10:40:28
    #32041411
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Либо так:
select min(id) from bla-bla-bla where
id not in ( select top N-записи-1 from bla-bla-bla order id)
...
Рейтинг: 0 / 0
07.08.2002, 10:47:40
    #32041413
Конкретная запись из таблицы
Во временную таблицу - не пойдет... Записей под 100 000 штук...
Как использовать курсор - можн опо-подробнее?
...
Рейтинг: 0 / 0
07.08.2002, 10:59:59
    #32041417
DAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Я делаю примерно так (без курсора):

declare @id int
select @id=min(id)-1 from MyTab
wnile 1 = 1 begin set rowcount 1
select @id=id,...... from MyTab where id > @id
if @@ROWCOUNT = 0 break
set rowcount 0
.............
end set rowcount 0
...
Рейтинг: 0 / 0
07.08.2002, 11:00:00
    #32041418
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Во временную хоть 10000000, а вообще второе предложение Maxa Вам видимо лучше всего . Но если нужны разные записи, то это будет динамический запрос.
...
Рейтинг: 0 / 0
07.08.2002, 11:24:19
    #32041421
Makc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Если с курсором то создаете cursor с опцией scroll
и просто передвигаете его на n-записей
остановиться на записи с нужном Вам ID
...
Рейтинг: 0 / 0
07.08.2002, 11:35:57
    #32041426
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
2 Андрей Николаевич
Возникла просто острейшая необходимость взять посредством SQL-запроса конкретную запись из таблицы.

А Вы не поделитесь что это за задача такая?
У меня как-то ни разу за 7 лет не возникала такая необходимость (ну разве что первые пару месяцев желания такие возникали). Даже не представить для чего это может понадобиться
...
Рейтинг: 0 / 0
07.08.2002, 14:43:04
    #32041504
Конкретная запись из таблицы
Могу поделиться. Мне нужно, чтобы из таблицы, в которой хранятся картинки RND вставлялась одна... Вот и вычисляю RND число из диап. записей и беру конкр. запись в таблице. Может Я чего то не так делаю? Но мне кажется, что это - наиболее оптимальный способ. Если есть предложения - всегда рад:%)
...
Рейтинг: 0 / 0
07.08.2002, 15:03:43
    #32041509
Зайцев Фёдор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Ни фига не понял!!!
...
Рейтинг: 0 / 0
07.08.2002, 15:19:02
    #32041520
Sanek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
как я понял , речь идет о чем то вроде показа банеров в инете ... если я правильно понял , то хочеться сделать нечто вроде того , что нужно показывать равномерно случайно картинки ....
Вариант :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TABLE IMAGES(ROW_NO INT IDENTITY( 1 , 1 ),URL Varchar( 10 ),isShow int)

CREATE PROCEDURE TEST AS
DECLARE @Row int,
             @URL VarChar( 10 )

SELECT TOP  1  @ROW_NO = ROW_NO,@URL = URL
FROM IMAGES
WHERE isShow =  0 

if ROW_NO is null 
begin
update IMAGES
SET isShow =  0 

SELECT TOP  1  @ROW_NO = ROW_NO,@URL = URL
FROM IMAGES
WHERE isShow =  0 
end


UPDATE images 
   set isShow =  1 
where ROW_NO = @ROW_NO



Если такой алгаритм используется для интернет то такая штука пройдет ....
...
Рейтинг: 0 / 0
07.08.2002, 15:23:25
    #32041525
LNH
LNH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
хитрая задачка

может что-то в этом духе

Код: plaintext
select top  1  * from (select top <Ваш RND> * from tablename order by rowid) as t1 order by rowid desc
...
Рейтинг: 0 / 0
07.08.2002, 16:14:37
    #32041542
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
если дырок не очень много то можно перебирать значения пока не наткнёмся на существующую запись
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
declare @max int, @id int
select @max=max(ID) from tbl

while @id is null
  select @id=ID from tbl where id=round(rand()*@max, 0 , 1 )+ 1 

select URL from tbl where id=@id


ну и еще много чего можно придумать, в том числе что выше написано
...
Рейтинг: 0 / 0
07.08.2002, 16:38:31
    #32041551
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SET NOCOUNT ON
DECLARE @count INT
DECLARE @id INT
DECLARE @rnd INT
DECLARE cur SCROLL  CURSOR 
FOR SELECT ID ... FROM tbl
SELECT @count=count(*) FROM tbl
SET @rnd=round(rand()*@count, 0 , 1 )+ 1 
OPEN cur
FETCH ABSOLUTE @rnd FROM cur
INTO @id .....
......
CLOSE cur
DEALLOCATE cur
...
Рейтинг: 0 / 0
08.08.2002, 08:51:59
    #32041701
Dikobrazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкретная запись из таблицы
К чему все эти сложности...
А чем плох SELECT TOP или SET ROWCOUNT? Причем ROWCOUNT лучше, т.к.
позволяет использовать переменную без всяких EXEC-ов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @RowNo int, @ID int

set @RowNo = 999 
set rowcount @RowNo

select @ID=ID 
from Table
order by ID

set rowcount  0 

select * from Table
where ID=@ID
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конкретная запись из таблицы / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]