Count에 기반한 IFELL 문을 사용하여 다른 Insert 문
데이터베이스를 검색하는 동안 특정 항목이 없으면 INSERT 문을 실행하고, 이 항목 중 하나 이상을 찾으면 다른 INSERT 문을 실행합니다.
IFELE 표현을 어떻게 사용해야 할지 잘 모르겠습니다.
지금까지 제가 가진 것은 대상 데이터가 나타나는 횟수를 세는 문장입니다. 0보다 크면 TRUE로 인쇄되고 그렇지 않으면 FALSE로 인쇄됩니다.이것을 사용하여 두 개의 다른 INSERT 문을 실행하는 방법을 이해하는 데 도움이 되는 예를 찾을 수 없습니다.
지금까지 제가 가진 것은 다음과 같습니다.
SELECT CASE WHEN COUNT(*)>0 THEN 'TRUE' ELSE 'FALSE' END
(
SELECT [Some Column], COUNT(*) TotalCount
FROM INCIDENTS
WHERE [Some Column] = 'Target Data'
GROUP BY [Some Column]
)
필요에 따라 다음과 같은 몇 가지 방법이 있습니다.
IF EXISTS (SELECT * FROM TABLE WHERE COLUMN = 'SOME VALUE')
--INSERT SOMETHING
ELSE
--INSERT SOMETHING ELSE
아니면 조금 더.
DECLARE @retVal int
SELECT @retVal = COUNT(*)
FROM TABLE
WHERE COLUMN = 'Some Value'
IF (@retVal > 0)
BEGIN
--INSERT SOMETHING
END
ELSE
BEGIN
--INSERT SOMETHING ELSE
END
다음을 사용하면 됩니다.
IF((SELECT count(*) FROM table)=0)
BEGIN
....
END
0을 초과하는 개수를 기준으로 검색해야 하는 경우 다음과 같이 사용하는 것이 좋습니다.
IF EXISTS (SELECT 1 FROM INCIDENTS WHERE [Some Column] = 'Target Data')
BEGIN
-- TRUE Procedure
END
ELSE BEGIN
-- FALSE Procedure
END
존재하는 경우
IF exists (select * from table_1 where col1 = 'value')
BEGIN
-- one or more
insert into table_1 (col1) values ('valueB')
END
ELSE
-- zero
insert into table_1 (col1) values ('value')
무슨 말인지 잘 모르겠습니다.
"I cant find any examples to help me understand how I can use this to run 2 different statements:"
사용하고 있습니까?CASE좋아해를SWITCH당신은 찾고 있습니까?
select case when totalCount >= 0 and totalCount < 11 then '0-10'
when tatalCount > 10 and totalCount < 101 then '10-100'
else '>100' end as newColumn
from (
SELECT [Some Column], COUNT(*) TotalCount
FROM INCIDENTS
WHERE [Some Column] = 'Target Data'
GROUP BY [Some Column]
) A
한 가지 분명한 해결책은 두 개의 개별 쿼리를 실행하는 것입니다. 먼저 count=1인 모든 항목을 선택하고 삽입을 실행한 다음 count>1인 항목을 선택하고 두 번째 삽입을 실행합니다.
두 개의 삽입물이 유사한 경우 두 개의 삽입물을 하나의 쿼리로 결합할 수 있습니다.
또 다른 가능성은 커서를 사용하여 레코드 집합을 순환하고 각 줄에 필요한 모든 논리를 수행하는 것입니다.
이것을 코딩하는 방법은 여러 가지가 있지만, 여기 한 가지 가능한 방법이 있습니다.MS SQL이
먼저 행 수를 확인한 다음(다른 빠른 예) if/else를 수행합니다.
-- Let's get our row count and assign it to a var that will be used
-- in our if stmt
DECLARE @HasExistingRows int -- I'm assuming it can fit into an int
SELECT @HasExistingRows = Count(*)
ELSE 0 -- false
FROM
INCIDENTS
WHERE {Your Criteria}
GROUP BY {Required Grouping}
이제 If/Ell Logic MSDN 문서를 수행할 수 있습니다.
-- IF / Else / Begin / END Syntax
IF @HasExistingRows = 0 -- No Existing Rows
BEGIN
{Insert Logic for No Existing Rows}
END
ELSE -- existing rows are found
BEGIN
{Insert logic for existing rows}
END
또 다른 더 빠른 방법(마흐무드 가말의 발언에서 영감을 얻음):
전체 변수 생성/할당을 잊어버림 - "EXIST" 찾기 - MSDN Docs 2.
IF EXISTS ({SELECT Query})
BEGIN
{INSERT Version 1}
END
ELSE
BEGIN
{INSERT version 2}
END
SQL Server에 있는 경우 구문이 올바르지만 COUNT(*)를 중첩된 쿼리의 Total Count로 참조해야 합니다.이를 통해 다음과 같은 이점을 얻을 수 있습니다.
SELECT CASE WHEN TotalCount >0 THEN 'TRUE' ELSE 'FALSE' END FROM
(
SELECT [Some Column], COUNT(*) TotalCount
FROM INCIDENTS
WHERE [Some Column] = 'Target Data'
GROUP BY [Some Column]
) DerivedTable
이를 사용하여 TotalCount를 변수에 할당한 다음 IFELF 문을 사용하여 INSERT 문을 실행할 수 있습니다.
DECLARE @TotalCount int
SELECT @TotalCount = TotalCount FROM
(
SELECT [Some Column], COUNT(*) TotalCount
FROM INCIDENTS
WHERE [Some Column] = 'Target Data'
GROUP BY [Some Column]
) DerivedTable
IF @TotalCount > 0
-- INSERT STATEMENT 1 GOES HERE
ELSE
-- INSERT STATEMENT 2 GOES HERE
언급URL : https://stackoverflow.com/questions/14072140/using-if-else-statement-based-on-count-to-execute-different-insert-statements
'programing' 카테고리의 다른 글
| 스프링 부트 구성 요소스캔 제외제외하지 않는 필터 (0) | 2023.07.06 |
|---|---|
| 새로운 문서의 Mongodb php get id? (0) | 2023.07.06 |
| CURL을 통해 모든 장치에 Firebase 알림을 보내는 방법은 무엇입니까? (0) | 2023.07.06 |
| Vuejs에서 무한한 시계 루프를 찾을 방법이 있습니까? (0) | 2023.07.06 |
| 대형 판다 데이터 프레임 분할 (0) | 2023.07.06 |