Подтвердить что ты не робот

Посмотрите, появляется ли элемент более одного раза в столбце базы данных.

Я хочу проверить, появляется ли часть данных более одного раза в определенном столбце в моей таблице с использованием SQL. Вот мой SQL-код того, что у меня есть до сих пор:

select * from AXDelNotesNoTracking where count(salesid) > 1

salesid - это столбец, который я хочу проверить, любая помощь будет оценена, спасибо.

4b9b3361

Ответ 1

Это должно быть:

SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1

Относительно вашего первоначального запроса:

  • Вы не можете сделать SELECT *, так как для этой операции требуется GROUP BY и столбцы должны либо находиться в GROUP BY, либо в совокупности (т.е. COUNT, SUM, MIN, MAX, AVG и т.д.).
  • Поскольку это операция GROUP BY, предложение HAVING будет фильтровать ее вместо WHERE

Edit:

И я просто подумал об этом, если вы хотите увидеть, что элементы WHICH находятся там более одного раза (но это зависит от используемой вами базы данных):

;WITH cte AS (
    SELECT  *, ROW_NUMBER() OVER (PARTITION BY SalesID ORDER BY SalesID) AS [Num]
    FROM    AXDelNotesNoTracking
)
SELECT  *
FROM    cte
WHERE   cte.Num > 1

Конечно, это просто показывает строки, которые появились с тем же SalesID, но не показывают начальное значение SalesID, которое появилось более одного раза. Значение, если SalesID отображается 3 раза, этот запрос будет показывать экземпляры 2 и 3, но не первый экземпляр. Тем не менее, это может помочь в зависимости от того, почему вы ищете несколько значений SalesID.

Edit2:

Следующий запрос был опубликован APC ниже и лучше, чем упомянутый выше CTE, поскольку он показывает все строки, в которых SalesID появился более одного раза. Я включаю его здесь для полноты. Я просто добавил ORDER BY, чтобы сохранить значения SalesID, сгруппированные вместе. ORDER BY также может помочь в CTE выше.

SELECT *
FROM AXDelNotesNoTracking
WHERE SalesID IN
    (     SELECT SalesID
          FROM AXDelNotesNoTracking
          GROUP BY SalesID
          HAVING COUNT(*) > 1
    )
ORDER BY SalesID

Ответ 2

Как насчет:

select salesid from AXDelNotesNoTracking group by salesid having count(*) > 1;

Ответ 3

попробуйте следующее:

select salesid,count (salesid) from AXDelNotesNoTracking group by salesid having count (salesid) >1

Ответ 4

Чтобы расширить ответ Соломона Рутцки, если вы ищете часть данных, которая отображается в диапазоне (то есть более одного раза, но менее 5 раз), вы можете использовать

having count(*) > 1 and count(*) < 5

И вы можете использовать там любые квалификаторы, которые вам нужны - они не должны совпадать, все это просто включено в утверждение "иметь". https://webcheatsheet.com/sql/interactive_sql_tutorial/sql_having.php