Muhammd Aamir Ответов: 1

Идентификатор запроса в SQL server


Всем Привет..
Я запрашиваю данные в Sql Server, и я столкнулся с ошибкой, я имею в виду очень неловкий ответ.
у меня есть 200 записей в моей таблице, и идентификатор таблицы находится между 1-200. Теперь проблема в том, что когда я ввожу Id = 332, он также покажет мне запись, даже если у меня нет никакого id 332

Что я уже пробовал:

Вот мой запрос
Select MOSQUEID,NAME,CITY,POSTCODE,PHONE from tbl_mosque Where MOSQUEID=332

Dave Kreskowiak

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

Откройте Диспетчер SQL Server и убедитесь, что идентификационный номер не существует в таблице.

Затем запустите свой код под отладчиком, установите точку останова в начале кода базы данных, который выполняет этот запрос, и выполните один шаг через код, исследуя содержимое переменных, чтобы убедиться, что они содержат то, что вы ожидаете, и следуйте логике.

Muhammd Aamir

Спасибо Дэйв получил фактический вопрос :)

1 Ответов

Рейтинг:
8

OriginalGriff

Если этот запрос:

Select MOSQUEID,NAME,CITY,POSTCODE,PHONE from tbl_mosque Where MOSQUEID=332
возвращает какие - либо записи, то у вас есть одна или несколько строк в вашей таблице, которые имеют MosqueId 332-он не будет выдумывать такую информацию!

Поэтому начните с просмотра строк, возвращаемых запросом, и посмотрите, что именно он возвращает. Сравните это с тем, что находится в таблице (используя SSMS для просмотра содержимого).
Если строка не существует, проверьте строку подключения и таблицу, которую вы используете.

Возможно, вы используете столбец идентификаторов и предполагаете, что наличие 200 записей подразумевает, что значения идентификаторов всегда будут варьироваться от 1 до 200, но SQL не "повторно использует" значения, поэтому, если вы удалите строки и вставите их снова, они не получат то же самое значение идентификатора.


Muhammd Aamir

Спасибо, сэр, я использую колонку идентификации, так что мне придется избегать этого

OriginalGriff

Никогда не пытайтесь возиться с ценностями идентичности, это вызывает больше проблем, чем решает (и неприятных, которые нужно исправить).
Вместо этого используйте ROWNUMBER для возврата последовательности, упорядоченной по столбцу IDENTITY, если вам абсолютно необходимы последовательные номера:

https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql

Muhammd Aamir

Спасибо сэр OrigunalGriff получил решение

OriginalGriff

Пожалуйста!