SQL для генерации списка чисел от 1 до 100 - PullRequest
41 голосов
/ 17 мая 2010

Используя таблицу DUAL, как получить список чисел от 1 до 100?

Ответы [ 12 ]

0 голосов
/ 06 мая 2016
SELECT * FROM `DUAL` WHERE id>0 AND id<101

Приведенный выше запрос написан на SQL в базе данных.

0 голосов
/ 06 мая 2016

Вариант примера Питера, демонстрирующий способ его использования для генерации всех чисел от 0 до 99.

with digits as (
  select mod(rownum,10) as num 
  from   dual 
  connect by rownum <= 10
)
select a.num*10+b.num as num 
from   digits a
       ,digits b
order by num
;

Нечто подобное становится полезным, когда вы делаете присвоение идентификатора партии и ищете элементы, которые еще не были назначены.

Например, если вы продаете билеты в бинго, вы можете назначить партии из 100 человек на этаже (угадайте, как я использовал для сбора средств на спорт). Когда они продают партию, им дается следующая партия в последовательности. Тем не менее, люди, покупающие билеты, могут купить любые билеты из партии. Можно задать вопрос, «какие билеты были проданы».

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

with range as (
  select mod(rownum,100) as num 
  from   dual 
  connect by rownum <= 100
),
AllPossible as (
  select a.num*100+b.num as TicketNum
  from   batches a
         ,range b
  order by num
)
select TicketNum as TicketsSold
from   AllPossible
where  AllPossible.Ticket not in (select TicketNum from TicketsReturned)
;

Извините за использование ключевых слов, я изменил некоторые имена переменных из примера из реального мира.

... Чтобы продемонстрировать, почему что-то подобное было бы полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...