Одним словом, да. Еще лучше IMO, если ваш продукт SQL поддерживает общие табличные выражения (CTE), т. Е. Проще на глаз, чем использование подзапроса, плюс один и тот же CTE можно использовать несколько раз, например. это для «создания» таблицы последовательности уникальных целых чисел от 0 до 999 в SQL Server 2005 и выше:
WITH Digits (nbr) AS
(
SELECT 0 AS nbr UNION ALL SELECT 1 UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5
UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8
UNION ALL SELECT 9
),
Sequence (seq) AS
(
SELECT Units.nbr + Tens.nbr + Hundreds.nbr
FROM Digits AS Units
CROSS JOIN Digits AS Tens
CROSS JOIN Digits AS Hundreds
)
SELECT S1.seq
FROM Sequence AS S1;
за исключением того, что вы действительно сделали бы что-то полезное с таблицей последовательности, например парсинг символов из столбца VARCHAR в базовой таблице.
ОДНАКО, если вы используете эту таблицу, которая состоит только из литеральных значений, многократных или многократных запросов, то почему бы не сделать ее базовой таблицей? Каждая база данных, которую я использую, имеет таблицу последовательностей целых чисел (обычно 100К строк), потому что она очень полезна.