Это моя структура таблицы,
create table ArticleTbl
(
ArticleID bigint identity(1,1),
ProductID int ,
ArticleName varchar(100),
PubDate datetime,
AuthorName varchar(50),
AuthorImage bit,
HtmlValues nvarchar(max)
)
Здесь productid
1=creditcard,2=prepaidcard,3 saving account,.........
Каждый productid имеет несколько строк записей, я хочу выбрать последние 2 записи каждого productid за один раз, вместо того, чтобы каждый раз обращаться к базе данных.
Моя процедура сейчас похожа ..
create proc USP_GetArticle_ByProduct(@ProductID int) as
select top(2) * from ArticleTbl where ProductID=@ProductID
Если я использую эту процедуру, каждый productid я должен перейти в базу данных...
Как получить один снимок всего продукта (последние 2 записи) с помощью запроса????
2 ответа
SELECT
*
FROM
(
SELECT
/*Random order per product*/
ROW_NUMBER() OVER (PARTITION BY ProductID ORDER BY NEWID() ) AS Ranking,
*
FROM
ArticleTbl
) foo
WHERE
foo.Ranking <= 2
Я полагаю, что это на сервере sql, да?
Если да, то вы могли бы сделать это...
select a1.*
from Articletbl a1
where a1.articleid in
(select top 2 a2.articleid
from ArticleTbl a2
where a2.productid = a1.productid
order by a2.articleid DESC)
order by a1.ProductID
Похожие вопросы
Связанные вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.