[SQL] 각각의 행에 대해 '어디에'조항 여러 여러 행을 업데이트
SQL각각의 행에 대해 '어디에'조항 여러 여러 행을 업데이트
나는 이런 식으로 내 테이블을 업데이트하려합니다 :
Update MyTable
SET value = 1
WHERE game_id = 1,
x =-4,
y = 8
SET value = 2
WHERE game_id = 1,
x =-3,
y = 7
SET value = 3
WHERE game_id = 2,
x = 5,
y = 2
나는 foreach는 ()를 할 수 있지만이 매우 느립니다 50 개 이상의 별도의 쿼리를 보낼 것입니다. 나는 그것이 하나의 큰 쿼리로 결합 할 이유입니다.
(I는 각 행의 ID 만 GAME_ID, x의 조합을 사용합니까와 y 내가 행 I의 필요성을 확인하는 데 사용하는 것입니다.)
CodeIgniter를으로부터 update_batch () 함수는 여기에 설명 : CodeIgniter의와 업데이트 배치 어디 조항 도움이 거의 완벽했다 그러나 그것은 단지 하나 하나의 where 절을 허용, 당신은 (지금까지의 내가 이해와 노력으로) 여러 배열을 입력 할 수 없습니다.
나는 또한이 질문에 체크 아웃했습니다 : 동일한 열하지만 절 WHERE 복수와 MYSQL UPDATE SET 그러나 그것은 오직 단 하나의 다른 WHERE 절을 포함하는 여러 행 업데이트 할 수 있으며 여러 개의 절을 필요로한다! :)
답변은 간단 SQL 또는 PHP (이그나이터)의 사용 또는 다른 방법으로 할 수 있습니다. 나는 가능한 모든 방법으로 해결이 문제를 거라고)
난 정말 조언 / 도움을 사용할 수 있습니다! = D
해결법
-
==============================
1.CASE를 사용하여 이것을를 시도해
CASE를 사용하여 이것을를 시도해
Update MyTable SET value = CASE WHEN game_id = 1 AND x = -4 AND y = 8 THEN 1 WHEN game_id = 1 AND x = -3 AND y = 7 THEN 2 WHEN game_id = 2 AND x = 5 AND y = 2 THEN 3 ELSE value END WHERE game_ID IN (1,2,3) AND -- the purpose of this WHERE clause x IN (-4, -3, 5) AND -- is to optimize the query by preventing from y IN (8,7,2) -- performing full table scan.
from https://stackoverflow.com/questions/15344120/update-multiple-rows-with-multiple-where-clauses-for-each-individual-row by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왼쪽에 방지 중복 값 가입 (0) | 2020.06.29 |
---|---|
[SQL] SQL Server는 열을 선택 변환 문자열로 변환 (0) | 2020.06.28 |
[SQL] 가져 오기 데이터는 두 날짜 사이에 게시 (0) | 2020.06.28 |
[SQL] 오류 : mysqlnd 이전 불안 인증을 사용하여 4.1 MySQL로 연결할 수 없습니다 (0) | 2020.06.28 |
[SQL] 안드로이드 SQLite는 쿼리 - 최신 10 개 개의 레코드를 얻기 (0) | 2020.06.28 |