Привет Я пытаюсь выполнить запрос, чтобы получить строку между определенным числом, Как я пытаюсь получить строки между 10-20. поэтому я использую подзапрос так, что я могу использовать row_number()
функциюSQL-подзапрос возвращает больше, что 1 значение
запрос не выполняется с ошибкой:
SQL subquery return more that 1 value
Так мне нужно найти способ, потому что мне нужно, чтобы получить больше, что 1 resulset из ряда запрос
PROCEDURE dbo.Search
(
@search_text varchar(max),
@search_category varchar(max),
@page int,
@COUNT INT OUTPUT
)
AS
SET NOCOUNT ON
DECLARE @Lower_limit int = (@page-1)*10;
DECLARE @Upper_limit int = (@page * 10) + 1;
-- SET @COUNT =0
IF @search_category='deal'
BEGIN
SET @COUNT = (SELECT COUNT(*) FROM dealData WHERE dealInfo LIKE '%' + @search_text + '%' OR dealName LIKE '%' + @search_text + '%' OR dealDescription LIKE '%' + @search_text + '%' GROUP BY dealId);
SELECT x.dealId , x.ROW
FROM
(SELECT dealId,ROW_NUMBER() OVER(ORDER BY dealId) as ROW from dealData WHERE dealInfo LIKE '%' + @search_text + '%' OR dealName LIKE '%' + @search_text + '%' OR dealDescription LIKE '%' + @search_text + '%' GROUP BY dealId)x
WHERE x.ROW < @Upper_limit AND x.ROW > @Lower_limit
END
Это полная процедура, и когда я пытаюсь вызвать его из следующего кода я получаю исключение при _command.ExecuteReader(); Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
_query = "Search";
_command = new SqlCommand(_query, _connection);
_command.CommandType = CommandType.StoredProcedure;
_command.Parameters.AddWithValue("@search_text", search_text);
_command.Parameters.AddWithValue("@search_category", search_category);
_command.Parameters.AddWithValue("@page", page);
var returnParameter = _command.Parameters.Add("@COUNT", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.Output;
_reader = _command.ExecuteReader();
while (_reader.Read())
{
search_result index = new search_result();
index.category_id = this._categoryIdFromName(search_category);
index.post_id = _reader.GetValue(0).ToString();
_searchList.Add(index);
}
Вы уверены, что это все ваши SQL и что выше SQL завершается с ошибкой вы сказали? Если нет, напишите фактический SQL, который возвращает сообщение об ошибке –
Что такое * проблема *? Что вы получаете, и чего вы хотите получить? Пока все выглядит правильно. –
Когда я пытаюсь запустить эту процедуру, я получаю это исключение. Подзапрос возвращает более 1 значения. Это недопустимо, когда подзапрос следует за =,! =, <, <= , >,> = или когда подзапрос используется как выражение. «Но когда я выполняю процедуру с одинаковыми параметрами из студия управления sql, я получаю ожидаемый результат – Amrit