programing

MySQL은 각 행에 고유한 하나의 쿼리 조건에서 여러 행을 삭제합니다.

goodjava 2022. 10. 21. 21:23

MySQL은 각 행에 고유한 하나의 쿼리 조건에서 여러 행을 삭제합니다.

MySQL에서는 다음과 같이 하나의 쿼리에 여러 행을 삽입할 수 있습니다.

INSERT INTO table (col1,col2) VALUES (1,2),(3,4),(5,6)

같은 방법으로 여러 행을 삭제하고 싶습니다.각 행에 대해 동일한 조건에 따라 여러 행을 삭제할 수 있습니다.

DELETE FROM table WHERE col1='4' and col2='5'

또는

DELETE FROM table WHERE col1 IN (1,2,3,4,5)

그러나 한 쿼리에서 여러 행을 삭제하고 각 행마다 고유한 조건 집합을 가지려면 어떻게 해야 합니까?다음과 같은 것이 제가 찾고 있는 것입니다.

DELETE FROM table WHERE (col1,col2) IN (1,2),(3,4),(5,6)

이거 어떻게 하는지 아는 사람 있어?아니면 불가능한가?

당신은 매우 가까웠기 때문에, 이것을 사용할 수 있습니다.

DELETE FROM table WHERE (col1,col2) IN ((1,2),(3,4),(5,6))

바이올린을 보세요.

답변을 약간 확장한 것이므로 질문자나 찾는 사람에게 도움이 될 것입니다.

할 수도 있습니다.SELECT삭제할 값을 지정합니다.그러나 오류 1093 - 업데이트 대상 테이블을 FROM 절에서 지정할 수 없습니다.에 주의하십시오.

DELETE FROM
    orders_products_history
WHERE
    (branchID, action) IN (
    SELECT
        branchID,
        action
    FROM
        (
        SELECT
            branchID,
            action
        FROM
            orders_products_history
        GROUP BY
            branchID,
            action
        HAVING
            COUNT(*) > 10000
        ) a
    );

단일 액션/브런치의 이력 기록 수가 10,000개를 넘는 이력 기록을 모두 삭제하고 싶었습니다.그리고 이 질문과 선택된 대답 덕분에, 나는 할 수 있다.

이게 도움이 됐으면 좋겠네요.

리차드.

구글링을 많이 했지만, 값 목록을 사용하여 하나의 테이블에서 여러 항목을 삭제하고 싶을 때 MySql용 파이썬에서 수행하는 작업은 다음과 같습니다.

#create some empty list
values = []
#continue to append the values you want to delete to it
#BUT you must ensure instead of a string it's a single value tuple
values.append(([Your Variable],))
#Then once your array is loaded perform an execute many
cursor.executemany("DELETE FROM YourTable WHERE ID = %s", values)

언급URL : https://stackoverflow.com/questions/14904067/mysql-delete-multiple-rows-in-one-query-conditions-unique-to-each-row