작업 마감일과 작업 설명을위한 두 개의 테이블이 있습니다. 각 작업은 상태를 취할 수 있으며 일부 상태는 작업 마감일을 다른 테이블에서 삭제해야 함을 의미합니다.
다음 SELECT
과 같이 내 기준에 맞는 작업 / 마감일을 쉽게 할 수 있습니다 LEFT JOIN
.
SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
( status
에 속하는 job
테이블에 없습니다 deadline
)
그러나에서 이러한 행을 삭제하려고 deadline
하면 MySQL에서 오류가 발생합니다. 내 질문은 :
DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
MySQL 오류는 아무것도 말하지 않습니다.
SQL 구문에 오류가 있습니다. 1 행의 ‘LEFT JOIN
job
ON deadline.job_id = job.job_id WHEREstatus
=’szaml ‘ 근처에서 사용할 올바른 구문은 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.
SELECT
실제 DELETE
쿼리 로 전환하려면 어떻게 해야합니까?
답변
적용 할 테이블을 지정하기 만하면됩니다 DELETE
.
deadline
행만 삭제하십시오 .
DELETE `deadline` FROM `deadline` LEFT JOIN `job` ....
deadline
및 job
행을 삭제하십시오 .
DELETE `deadline`, `job` FROM `deadline` LEFT JOIN `job` ....
job
행만 삭제하십시오 .
DELETE `job` FROM `deadline` LEFT JOIN `job` ....
답변
“table as”를 사용하는 경우 삭제하도록 지정하십시오.
이 예에서는 table_2에 존재하지 않는 모든 table_1 행을 삭제합니다.
DELETE t1 FROM `table_1` t1 LEFT JOIN `table_2` t2 ON t1.`id` = t2.`id` WHERE t2.`id` IS NULL
답변
DELETE FROM deadline where ID IN (
SELECT d.ID FROM `deadline` d LEFT JOIN `job` ON deadline.job_id = job.job_id WHERE `status` = 'szamlazva' OR `status` = 'szamlazhato' OR `status` = 'fizetve' OR `status` = 'szallitva' OR `status` = 'storno');
그런 종류의 하위 쿼리가 MySQL에서 작동하는지 확실하지 않지만 시도하십시오. 마감일 테이블에 ID 열이 있다고 가정합니다.
답변
이 시도:
DELETE `deadline`
FROM `deadline`
INNER JOIN `job` ON `deadline`.`job_id` = `job`.`id`
WHERE `job`.`id` = 123
답변
MySQL을 사용하면 DELETE 문에서 INNER JOIN 절을 사용하여 테이블의 행과 다른 테이블의 일치하는 행을 삭제할 수 있습니다.
예를 들어, 지정된 조건을 만족하는 T1 및 T2 테이블에서 행을 삭제하려면 다음 명령문을 사용하십시오.
DELETE T1, T2
FROM T1
INNER JOIN T2 ON T1.key = T2.key
WHERE condition;
DELETE와 FROM 키워드 사이에 테이블 이름 T1과 T2를 넣습니다. T1 테이블을 생략하면 DELETE 문은 T2 테이블의 행만 삭제합니다. 마찬가지로 T2 테이블을 생략하면 DELETE 문은 T1 테이블의 행만 삭제합니다.
이 도움을 바랍니다.