Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310

Что использовать - COUNT или EXISTS?

16.07.2022, 10:08. Показов 1269. Ответов 9

Студворк — интернет-сервис помощи студентам
Добрый день! Нужно проверить есть ли запись (хотябы одна строка) в базе.
C#
1
2
3
4
5
6
7
8
9
10
 connectionString = WebConfigurationManager.ConnectionStrings["OSBR"].ConnectionString;
                con = new SqlConnection(connectionString);
                con.Open();
                cmd = con.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd = new SqlCommand("SELECT EXISTS (SELECT * FROM dbo.OSPNZ WHERE SiteID=@SiteID)", con);
                cmd.Parameters.AddWithValue("@SiteID", s);
                int obj = Convert.ToInt32(cmd.ExecuteScalar());
                if (obj > 0)
                { ...
Вот много всего почитал посмотрел что COUNT не рекомендуется использовать a c EXISTS не получается

Incorrect syntax near the keyword 'EXISTS'.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'EXISTS'.
Красным выделена строка int obj = Convert.ToInt32(cmd.ExecuteScalar());

Что думаете? Что не так? База MSSQL
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2022, 10:08
Ответы с готовыми решениями:

Показать максимум count через exists
Мне нужно вывести все максимальные значения count(subscriptions.sb_book). Я знаю, что этих значений всего 2, то есть 2 строчки, где qbook =...

Что быстрее JOIN, IN или EXISTS
У меня две таблицы: A(id,a2) и B(a_id,b2)//A.id - PK, B.a_id - FK N - количество записей в А , M - количество записей в B Что...

Contains или Count, что быстрее?
Есть DbSet<Countries>. Нужно при добавлении новой страны в DbSet проверить есть ли уже такая. Что посоветуете использовать с точки зрения...

9
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
16.07.2022, 11:33
Цитата Сообщение от gena8208 Посмотреть сообщение
SELECT EXISTS
с чего вы решили что так можно писать?
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
16.07.2022, 11:47  [ТС]
Цитата Сообщение от Dr9vik Посмотреть сообщение
с чего вы решили что так можно писать?
https://docs.microsoft.com/en-... issue.html
Цитата с другого форума
Я бы конечно на уровне БД это делал с оформлением в виде процедур, но если так хочется в коде это сделать, то самый простой вариант будет:

if not exists(select 1 from People_list WHERE ФИО = 'Иванов Иван Иванович')
insert into...
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.07.2022, 12:29
Лучший ответ Сообщение было отмечено gena8208 как решение

Решение

gena8208,
Цитата Сообщение от gena8208 Посмотреть сообщение
Цитата с другого форума
а как насчет официальной документации по использованию этого оператора?
Цитата Сообщение от gena8208 Посмотреть сообщение
Вот много всего почитал посмотрел что COUNT не рекомендуется использовать
покажите, где написано про это, желательно с объяснениями. Опережая Ваш ответ скажу, что реплика выше про "не рекомендуется" - это полный бред
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
16.07.2022, 13:00
gena8208, перепишите так
SQL
1
SELECT CASE WHEN EXISTS (SELECT 1 FROM dbo.OSPNZ WHERE SiteID=@SiteID) THEN 1 ELSE 0 END
но это mssql не дает, на mysql оригинальный запрос работает
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
Опережая Ваш ответ скажу, что реплика выше про "не рекомендуется" - это полный бред
Автор, наверно слышал это про distinct count, на большой выборке - это очень ресурсозатратная операция. Поэтому создали approximate count
https://docs.microsoft.com/ru-... rver-ver16
1
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
16.07.2022, 13:33  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
а как насчет официальной документации по использованию этого оператора?
https://function-x.ru/sql_exists.html#paragraph1

Предикат языка SQL EXISTS выполняет логическую задачу. В запросах SQL этот предикат используется в выражениях вида


EXISTS (SELECT * FROM ИМЯ_ТАБЛИЦЫ...).
Это выражение возвращает истину, когда по запросу найдена одна или более строк, соответствующих условию, и ложь, когда не найдено ни одной строки.

Обычно предикат EXISTS применяется в случаях, когда необходимо найти значения, соответствующие основному условию, заданному в секции WHERE, и дополнительному условию, заключённому в подзапрос, являющийся аргументом предиката.
Возможно это только процедурами в SQL а не используется в C#
https://metanit.com/sql/sqlserver/6.3.php
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.07.2022, 13:37
gena8208,мне не нужно скидывать текст описания, этот вопрос был обращён к Вам на самостоятельное изучение и исправление ошибки в запросе.
0
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
16.07.2022, 13:44  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
gena8208,мне не нужно скидывать текст описания, этот вопрос был обращён к Вам на самостоятельное изучение и исправление ошибки в запросе.
я вышел из ситуации через SELECT COUNT(*) возможно это неверно. Может найду что-то правильное
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.07.2022, 13:47
gena8208, это то, что нужно.
1
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
19.07.2022, 01:56
gena8208, select top 1 1 from ... оптимальнее чем count
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2022, 01:56
Помогаю со студенческими работами здесь

Что шустрее? select count(*) или mysql_num_rows?
1) Select count(*) from table where condition1 $num = mysql_fetch_row($res); $num-результат; или альтернатива: 2) $result = Select...

Пишу программу, для моделирования физ. процесса, что использовать для визуализации: окно, с помощью CreateWindow, или канву, или ещё что-то?
Доброго времени суток, делаю программу, для моделирования физ. процесса, так вот что использовать для визуализации: окно, с помощью...

Что использовать двумерный массив, Arraylist или что то другое?
Подскажите пожалуйста (я новичок), мне нужно считать данные с файла и занести их во что то, чтобы можно было потом с этими данными...

Или использовать интерфейс или что то другое
Есть новый класс "WebElementEx2" который унаследовать от интерфейса "IWebElement". public class WebElementEx2: IWebElement { ...

Что использовать: БД или не БД?
Здравствуйте, есть очень большое количество данных, которые нужно где-то хранить. (Данные иерархивны) С этими данными будет работать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru