Так, я знаю достаточно просто SQL, чтобы быть опасным, и я следующий пример, чтобы тянуть стоит один страницы записей из таблицы:Удаление повторяющихся записей, прежде чем нумерации строк в результате
SELECT TOP #arguments.perPage# * FROM (
SELECT DISTINCT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS rownum, productdiagramparts.productdiagramid AS productdiagramid, products.id AS productid, products.title AS producttitle, totalRows = COUNT(*) OVER()
FROM manufacturers
INNER JOIN products ON manufacturers.id = products.manufacturerid
INNER JOIN productdiagramparts ON products.id = productdiagramparts.productid
INNER JOIN productdiagrams ON productdiagramparts.productdiagramid = productdiagrams.id
WHERE #whereClause#
) _tmpInlineView
WHERE rownum > #offset#
ORDER BY producttitle
Оператор SELECT TOP обернутой вокруг этого конечно, тянет только записи для текущей страницы. Проблема в том, что в самом внутреннем выражении SELECT, который я хочу удалить, есть дубликаты, но использование DISTINCT не работает, как показано выше, потому что строки уже нумеруются для внешнего запроса. Как я могу сделать мои самые внутренние результаты SELECT отличными до нумерации строк?
Вот решение на основе принятого ответа ниже:
Выбор TOP # arguments.perPage # * ОТ (
SELECT, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS ROWNUM, productdiagramid, ProductID, producttitle, totalRows = COUNT (*) НАД() ОТ (
SELECT DISTINCT productdiagramparts.productdiagramid AS productdiagramid, products.id AS ProductID, products.title А.С. producttitle от производителей INNER JOIN продукты ПО manufacturers.id = products.manufacturerid INNER JOIN productdiagramparts ПО products.id = productdiagramparts.productid INNER JOIN productdiagrams ПО productdiagramparts.productdiagramid = productdiagrams.id где # # WhereClause
) _tmpDupRemove
) _tmpInlineView
ГДЕ ROWNUM> # смещение # ORDER BY producttitle
Я думаю, что вы на самом деле это overengineered. Когда я смотрю на ваш sql, я не могу сказать, на что вы хотите основать свои верхние n записей. Ты можешь? –
Для лучшей помощи в удалении дубликатов нам понадобятся определения таблиц и примеры данных. –