예를 찾을 수 없었습니다. 어쩌면 불가능할 수도 있고 적절한 검색 단어를 사용하지 않고있는 것일 수도 있습니다.MySQL에서 다른 테이블의 값을 사용하여 DELETE 문을 필터링하는 방법은 무엇입니까?
그것은 간단하다 : 나는 이벤트에 대한 외부 키와 조인 된 테이블이 있습니다
CREATE TABLE dbp_Join(
Event INT,
Participant INT,
Location INT,
TST TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY(Event) REFERENCES dbp_Events(ID)
ON UPDATE CASCADE
ON DELETE CASCADE,
FOREIGN KEY(Participant) REFERENCES dbp_Participants(ID)
ON UPDATE CASCADE
ON DELETE CASCADE,
FOREIGN KEY(Location) REFERENCES dbp_Locations(ID)
ON UPDATE CASCADE
ON DELETE CASCADE
)ENGINE = INNODB;
을 그리고 이벤트 테이블이 있습니다
CREATE TABLE dbp_Events(
ID INT auto_increment,
Name Char(80),
ETime DATETIME NOT NULL,
Details VARCHAR(2000),
E_TST TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(ID, E_TST)
)ENGINE = INNODB;
을 내가 가지고있는 이벤트를 참조하는 테이블에 참여의 가치와 참석하는 사용자. 2014-12-12에 일어나는 이벤트를 참조하는 Join 테이블의 모든 행을 삭제하고 싶습니다. 어떻게 그 쿼리를 작성합니까? 그럴 수있어? 그냥 전체 테이블을 비워, 내가
DELETE FROM dbp_Join, dbp_Events WHERE DATE(`ETime`)='2014-12-12';
을 시도
DELETE FROM dpb_Join WHERE DATE(dbp_Events.`ETime`)='2014-12-12';
그러나 그것은 작동하지 않습니다 :이 같은 것을 갖고 싶어.
UPDATE : 는 MySQL의에서 예를 들어 그것을 할 올바른 방법처럼 보였다 참조를 삭제했지만, 그것은 아무것도 삭제되지 않습니다 : 내가 여기에 문제를 볼 수 없습니다
DELETE dbp_join FROM dbp_join INNER JOIN dbp_events
WHERE DATE(dbp_events.ETime='2014-12-12');
방금 이벤트를 삭제할 수 없습니다 참조? – Strawberry
그럴 수는 없지만 인스턴스를 지우고 이벤트 자체를 지우고 싶지는 않습니다. – Megakoresh