Сделайте Выбор SQL той же строкой многократно

Я должен протестировать свой почтовый сервер. Как я могу сделать оператор Select, который выбирает, говорят ID=5469 тысячу раз.

9
задан Snoop Dogg 18 March 2010 в 19:13
поделиться

7 ответов

Вы можете использовать оператор UNION ALL.

Попробуйте что-то вроде:

SELECT * FROM tablename WHERE ID = 5469
UNION ALL
SELECT * FROM tablename WHERE ID = 5469

Вам нужно будет повторить оператор SELECT несколько раз, но вы можете написать немного кода VB в Access, чтобы создать динамический оператор SQL, а затем выполнить его. Не очень красиво, но это должно сработать.

6
ответ дан 4 December 2019 в 06:49
поделиться

Если вы делаете это на сервере sql

declare @cnt int
set @cnt = 0

while @cnt < 1000
begin
    select '12345'
    set @cnt = @cnt + 1
end 

, выберите '12345' может быть любым выражением

1
ответ дан 4 December 2019 в 06:49
поделиться

Самый простой способ - создать таблицу с 1000 строками. Назовем его BigTable . Затем вы должны запросить нужные данные и присоединить их к большой таблице, например:

SELECT MyTable.*
FROM MyTable, BigTable
WHERE MyTable.ID = 5469
-1
ответ дан 4 December 2019 в 06:49
поделиться

на сервере sql попробуйте:

print 'wow'
go 5

вывод:

Beginning execution loop
wow
wow
wow
wow
wow
Batch execution completed 5 times.
-2
ответ дан 4 December 2019 в 06:49
поделиться

Если я понял, что вы имеете в виду, то очень простой способ заключается в том, чтобы соединить производный запрос с таблицей с более чем 1000 строк в ней и поместить туда топ-1000. Это продублирует ваши результаты в 1000 раз.

EDIT: В качестве примера (это MSSQL, я не знаю, сильно ли отличается Access)

SELECT
    MyTable.*
FROM
    MyTable
CROSS JOIN
(
    SELECT TOP 1000
        *
    FROM
        sysobjects
) [BigTable]
WHERE
    MyTable.ID = 1234
21
ответ дан 4 December 2019 в 06:49
поделиться

Создайте вспомогательную таблицу для этой цели:
JUST_NUMBER(NUM INT первичный ключ)
Вставьте (с помощью некоторого (VB) скрипта) числа от 1 до N. Затем выполните этот объединенный запрос:

SELECT  MYTABLE.*
FROM    MYTABLE,
        JUST_NUMBER
WHERE   MYTABLE.ID = 5469 
    AND JUST_NUMBER.NUM <= 1000
4
ответ дан 4 December 2019 в 06:49
поделиться

Вот способ использования рекурсивного общего табличного выражения для создания некоторых пустых строк, а затем для их перекрестного соединения обратно в нужную строку:

declare @myData table (val int) ;
insert @myData values (666),(888),(777) --some dummy data

;with cte as
(
    select 100 as a
    union all
    select a-1 from cte where a>0 
        --generate 100 rows, the max recursion depth

)
,someRows as
(
select top 1000 0 a from cte,cte x1,cte x2 
       --xjoin the hundred rows a few times
       --to generate 1030301 rows, then select top n rows
)
select m.* from @myData m,someRows where m.val=666

замените @myData на вашу настоящую таблицу и измените последний предикат, который подходит.

2
ответ дан 4 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: