MySQL 오류:UPDATE 및 LIMIT의 잘못된 사용
MySQL 코드가 올바르게 작동하려면 이 문제를 어떻게 해결해야 합니다.
여기 문제를 알려주는 MySQL 코드가 있습니다.
$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "') LIMIT 1";
$r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
업데이트용 MySQL 문서에 따르면:
다중 테이블 구문의 경우 UPDATE는 조건을 충족하는 table_references에 이름이 지정된 각 테이블의 행을 업데이트합니다.이 경우 ORDER BY 및 LIMIT를 사용할 수 없습니다.
**mysql의 제한을 사용하여 여러 행을 업데이트하려면... directly 제한을 사용하면 안 됩니다.**
UPDATE table_name SET name='test'
WHERE id IN (
SELECT id FROM (
SELECT id FROM table_name
ORDER BY id ASC
LIMIT 0, 10
) tmp
);
오래된 질문인 것은 알지만 이 오류를 구글링할 때 첫 번째 링크입니다.파생 테이블을 사용하여 성능 문제 없이(인덱스에 따라) 이 문제를 해결할 수 있는 방법이 있습니다.
UPDATE table1 t1
JOIN (SELECT t1.id
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id
AND t2.some_criteria = 'some_value'
WHERE t1.other_criteria = 'other_value'
LIMIT 10000
) tmp ON tmp.id = t1.id
SET t1.field_to_update = 'new_value'
LIMIT가 하위 쿼리 내부에 있기 때문에 조인은 LIMIT 절의 행 개수만 일치하므로 쿼리는 해당 행만 업데이트합니다.
다중 테이블 구문의 경우,UPDATE
는 조건을 충족하는 table_refenersion에 이름이 지정된 각 테이블의 행을 업데이트합니다.이 경우에는.ORDER BY
그리고.LIMIT
사용할 수 없음
@Marc B는 그 이유를 설명합니다.update
정상적으로 작업할 수 없습니다.limit
.
또한 @Roopchand는 솔루션을 제공합니다.
나 같은 사람들에게 있어서, 그들이 꺼지는 것을 피하려고 하는 사람들.safe update mode
https://stackoverflow.com/a/28316067/1278112
이 대답은 꽤 도움이 됩니다.그것은 예를 들어줍니다.
업데이트 고객 SET countryCode = 'USA' WHERE country = 'USA'; -- 이 오류가 발생하면 다음과 같이 적습니다.
업데이트 국가 코드 = 'USA' WHERE (국가 = 'USA' AND customer Number <> 0); -- customer Number는 기본 키이므로 더 이상 오류 1175가 발생하지 않습니다.
그리고 내가 마주할 때update
다중 테이블 구문으로 작동했습니다.
내가 원하지만 에러 코드 1175를 올리는 것.
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
t1.name = t2.name;
작업판
UPDATE table1 t1
INNER JOIN
table2 t2 ON t1.name = t2.name
SET
t1.column = t2.column
WHERE
(t1.name = t2.name and t1.prime_key !=0);
그건 정말 단순하고 우아합니다.원래 답변이 너무 관심(투표)을 받지 않기 때문에 더 많은 설명을 올립니다.이것이 다른 사람들에게 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/4291833/mysql-error-incorrect-usage-of-update-and-limit
'it-source' 카테고리의 다른 글
Drietrine QueryBuilder의 식 mysql NOW() (0) | 2023.11.07 |
---|---|
C에서 ASCII 문자를 int로 변환하는 방법 (0) | 2023.11.07 |
Magento에서 getChildHtml 이해 (0) | 2023.11.07 |
Powershell get-event 로그 메시지 열이 너무 짧습니다. (0) | 2023.11.07 |
코드 미러 편집기가 클릭할 때까지 콘텐츠를 로드하지 않습니다. (0) | 2023.11.07 |