항목이 데이터베이스 열에 두 번 이상 나타나는지 확인
SQL을 사용하여 테이블의 특정 열에 데이터 조각이 두 번 이상 나타나는지 확인하고 싶습니다. 지금까지 내가 가지고있는 SQL 코드는 다음과 같습니다.
select * from AXDelNotesNoTracking where count(salesid) > 1
salesid
확인하고 싶은 열입니다. 어떤 도움을 주시면 감사하겠습니다.
그것은해야한다:
SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
초기 쿼리와 관련하여 :
- 이 작업에는 GROUP BY가 필요하고 열은 GROUP BY 또는 집계 함수 (예 : COUNT, SUM, MIN, MAX, AVG 등)에 있어야하므로 SELECT *를 수행 할 수 없습니다.
- 이것은 GROUP BY 작업이므로 HAVING 절이 WHERE 대신 필터링합니다.
편집하다:
그리고 한 번 이상 거기에 어떤 항목이 있는지 확인하려면 이것을 생각했습니다 (하지만 사용하는 데이터베이스에 따라 다름).
;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 값을 찾는 이유에 따라 도움이 될 수 있습니다.
편집 2 :
다음 쿼리는 아래 APC에 의해 게시되었으며 SalesID가 두 번 이상 나타난 모든 행을 표시한다는 점에서 위에서 언급 한 CTE보다 낫습니다. 완전성을 위해 여기에 포함 시켰습니다. SalesID 값을 함께 그룹화하기 위해 ORDER BY를 추가했습니다. ORDER BY는 위의 CTE에서도 도움이 될 수 있습니다.
SELECT *
FROM AXDelNotesNoTracking
WHERE SalesID IN
( SELECT SalesID
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
)
ORDER BY SalesID
어때 :
select salesid from AXDelNotesNoTracking group by salesid having count(*) > 1;
이 시도:
select salesid,count (salesid) from AXDelNotesNoTracking group by salesid having count (salesid) >1
Solomon Rutzky의 답변을 확장하려면 범위 (즉, 한 번 이상 5x 미만)에 표시되는 데이터 조각을 찾고 있다면 다음을 사용할 수 있습니다.
having count(*) > 1 and count(*) < 5
그리고 거기에서 원하는 한정자를 사용할 수 있습니다. 일치 할 필요는 없습니다. 모두 'haveing'문에 포함됩니다. https://webcheatsheet.com/sql/interactive_sql_tutorial/sql_having.php
'programing' 카테고리의 다른 글
임의의 가비지 바이트를 파일에 쓰는 명령이 있습니까? (0) | 2021.01.17 |
---|---|
IEnumerable에 단일 항목을 추가하는 Linq 메서드가 있습니까? (0) | 2021.01.17 |
CSS-마우스 오버가 요소를 통과하여 커버 된 요소에 마우스 오버를 활성화합니다. (0) | 2021.01.17 |
OmniAuth를 통해 매개 변수 전달 (0) | 2021.01.17 |
Python 문서 용 reStructuredText에 대한 실제 대안이 있습니까? (0) | 2021.01.17 |