반응형
ID를 기반으로 테이블의 여러 행을 업데이트해야합니다. 저장 프로 시저에서 Ids 목록을 보유하는 varchar 변수를 만듭니다.
이제 테이블에는 Ids 1, 2의 항목이 있습니다. varchar 변수의 값은 1,2
입니다. 따라서 다음 쿼리로 업데이트되는 행이 없을 것으로 예상합니다.
UPDATE mytbl
SET flag = 1
WHERE Id IN (IdList); -- Here IdList has value '1,2'
그러나 여기에서 Id가 2
인 행이 업데이트되고 있습니다. 선택 쿼리도 동일한 행을 반환합니다.
I tried concatenating IdList
as "'1','2'"
, then it retuens both the rows (with Ids 1 and 2).
Id
의 데이터 유형은 int
입니다. 정수 목록을 유지하는 적절한 방법이 있습니까?
해결 방법
이 시도:
UPDATE mytbl
SET flag = 1
WHERE @IdList LIKE CONCAT('%,',Id,',%');
varchar 목록 @IdList
는 쉼표로 시작하고 끝나야합니다 (예 : , 1,2,20,30,
).
참조 페이지 https://stackoverflow.com/questions/27618037
반응형
'MySql' 카테고리의 다른 글
MySQL : CASE / ELSE 값을 결합 매개 변수로 사용 (0) | 2020.11.26 |
---|---|
MySQL 이미 데이터가있는 MySQL 데이터베이스 필드에 데이터 추가 (0) | 2020.11.25 |
MySQL 데이터베이스 필드를 1 씩 증가 (0) | 2020.11.25 |
MySQL Python에서 mysql로 준비된 문 사용 (0) | 2020.11.25 |
MySQL 모델 파일의 비 객체에서 멤버 함수 num_rows () 호출 (0) | 2020.11.25 |
댓글