0 голосов
спросил от в категории SQL
Я не рекомендую его вообще - это определенно то, что вы должны делать на своем языке презентации, а не в SQL.

Однако решение 1 неверно: это очень возможно, если это довольно неприятно.
Начните с создания таблицы под названием Count12 - ей нужен один столбец INT, называемый Counter.
Заполните его 12 значениями:
Counter 1 2 3 4 5 6 7 8 9 10 11 12
Тогда это просто JOIN, чтобы получить такую ​​же информацию 12 раз:
SELECT a.Name, a.Address FROM Count12 b JOIN MyTable a ON 1=1
Если вы сделаете таблицу Count, укажите 1000 строки, вы можете ограничить количество копий с помощью WHERE:
SELECT a.Name, a.Email FROM Count12 b JOIN MyTable a ON 1=1 WHERE b.Counter <= 5
Будет выдавать вам 5 копий каждой строки, например.

re еще лучше сделать это на вашем языке презентации, хотя.

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

0 голосов
ответил от
Вы можете попробовать использовать временную таблицу с 12 (или сколько угодно вам) и присоединиться к ней с помощью таблицы клиентов. Я написал вам хранимую процедуру, которая должна это сделать.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE A4REPEAT @CustId int = 0, @NumTimes int = 0 AS BEGIN SET NOCOUNT ON;         IF EXISTS(SELECT * FROM #temp) DROP TABLE #temp CREATE TABLE #temp (   CustId int ) DECLARE @i int = 0 WHILE @i < @NumTimes  BEGIN SET @i = @i + 1 INSERT INTO #temp (CustId) VALUES (@CustId) END SELECT [#temp].[CustId], [FirstName], [LastName], [... address info ...] FROM [#temp] INNER JOIN [Customer] ON [#temp].[CustId]=[Customer].[CustId]; END GO
0 голосов
ответил от
Насколько мне известно, это невозможно, потому что sql или mysql не могут выбирать одни и те же данные несколько раз, потому что он хочет когда-то уникальных b/w, это может быть id, любой текст или что-то еще. Например, у меня есть пять столбцов id, name, country, city, status и values. 1 John PK KHI 1
2 Смит П.К. ХI 1
3 John PK KHI 1
в этом примере вы можете получить john дважды, но есть один, это уникальный ч/б, это id. Но он не может выбрать john дважды, имея id 1, даже если вы отфильтруете его в выборе столбца.
Если вы думаете о UNION , это также не так. Только одно можно сделать за пределами sql или mysql, как в PHP-коде или js-коде или .net-коде.
0 голосов
ответил от
Вам нужно использовать CROSS JOIN для списка чисел - См. статью CP
declare @Customer table (CustID int, CustName nvarchar(100)) insert into @Customer (CustID, CustName) values (101, 'My test data') ;with series as ( select 1 as datum UNION ALL select datum + 1 from series where datum + 1 < 13 ) SELECT * from @Customer  cross join series where CustID=101
# [
SELECT * from @Customer  CROSS JOIN (SELECT TOP (12) ROW_NUMBER() OVER (ORDER BY [object_id]) as datum FROM sys.all_objects) AS series WHERE CustID=101
#]

Например: Создание серии для себя ...
declare @Customer table (CustID int, CustName nvarchar(100)) insert into @Customer (CustID, CustName) values (101, 'My test data') ;with series as ( select 1 as datum UNION ALL select datum + 1 from series where datum + 1 < 13 ) SELECT * from @Customer  cross join series where CustID=101
ИЛИ вы можете использовать системные таблицы для создания такой последовательности:
SELECT * from @Customer  CROSS JOIN (SELECT TOP (12) ROW_NUMBER() OVER (ORDER BY [object_id]) as datum FROM sys.all_objects) AS series WHERE CustID=101

Категории

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

Связанных вопросов не найдено

...