2015-02-23 193 views
0

我正在做一個練習的句子,MySQL在這句話中不斷給我帶來那個錯誤。錯誤1064:語法錯誤MySQL

delete centros where cod_centros not in(select cod_centro from personal); 

下面是表:

CREATE TABLE CENTROS (
COD_CENTRO integer NOT NULL, 
TIPO_CENTRO CHAR(1), 
NOMBRE VARCHAR(30), 
DIRECCION VARCHAR(26), 
TELEFONO VARCHAR(10), 
NUM_PLAZAS integer, 
primary key (cod_centro) 
); 

CREATE TABLE PERSONAL (
COD_CENTRO integer NOT NULL, 
DNI integer, 
APELLIDOS VARCHAR(30), 
FUNCION VARCHAR(15), 
SALARIO integer, 
primary key (cod_centro,dni), 
foreign key (cod_centro) references Centros(cod_centro) 
); 

,這裏是插入數據:

INSERT INTO CENTROS VALUES (10,'S','IES El Quijote', 
'Avda. Los Molinos 25', '965-887654',538); 
INSERT INTO CENTROS VALUES (15,'P','CP Los Danzantes', 'C/Las Musas s/n', 
'985-112322',250); 
INSERT INTO CENTROS VALUES (22,'S', 'IES Planeta Tierra', 'C/Mina 45', 
'925-443400',300); 
INSERT INTO CENTROS VALUES (45,'P', 'CP Manuel Hidalgo', 'C/Granada 5', 
'926-202310',220); 
INSERT INTO CENTROS VALUES (50,'S', 'IES Antoñete', 'C/Los Toreros 21', 
'989-406090',310); 


INSERT INTO PERSONAL VALUES (10,1112345,'Martínez Salas, Fernando', 
'PROFESOR', 220000); 
INSERT INTO PERSONAL VALUES (10,4123005,'Bueno Zarco, Elisa', 
'PROFESOR', 220000); 
INSERT INTO PERSONAL VALUES (10,4122025,'Montes García, M.Pilar', 
'PROFESOR', 220000); 

INSERT INTO PERSONAL VALUES (15,1112345,'Rivera Silvestre, Ana', 
'PROFESOR', 205000); 
INSERT INTO PERSONAL VALUES (15,9800990, 'Ramos Ruiz, Luis', 
'PROFESOR', 205000); 
INSERT INTO PERSONAL VALUES (15,8660990, 'De Lucas Fdez, M.Angel', 
'PROFESOR', 205000); 

INSERT INTO PERSONAL VALUES (22,7650000, 'Ruiz Lafuente, Manuel', 
'PROFESOR', 220000); 
INSERT INTO PERSONAL VALUES (45,43526789, 'Serrano Laguía, María', 
'PROFESOR', 205000); 


INSERT INTO PERSONAL VALUES (10,4480099,'Ruano Cerezo, Manuel', 
'ADMINISTRATIVO', 180000); 
INSERT INTO PERSONAL VALUES (15,1002345,'Albarrán Serrano, Alicia', 
'ADMINISTRATIVO', 180000); 
INSERT INTO PERSONAL VALUES (15,7002660,'Muñoz Rey, Felicia', 
'ADMINISTRATIVO', 180000); 
INSERT INTO PERSONAL VALUES (22,5502678,'Marín Marín, Pedro', 
'ADMINISTRATIVO', 180000); 
INSERT INTO PERSONAL VALUES (22,6600980, 'Peinado Gil, Elena', 
'CONSERJE', 175000); 
INSERT INTO PERSONAL VALUES (45,4163222, 'Sarro Molina, Carmen', 
'CONSERJE', 175000); 

我不知道該怎麼辦,我想選擇的語法是罰款但不斷髮出錯誤,所以我一直在想,也許這是來自mysql工作臺的錯誤,但我不知道該怎麼做!

回答

0

您錯過了from關鍵字,它指明您要刪除哪張表。

正確的解決辦法:

delete from centros where cod_centros not in (select cod_centro from personal); 

這裏是原始的,完整的,單表語法:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

參考:MySQL's DELETE Syntax Single-table syntax.

+0

非常感謝你,我的上帝我不知道我怎麼不能呃,我猜這是糟糕的一天。再次感謝!祝你今天愉快! – Mike 2015-02-23 18:18:33

+0

@MikeZyxt不客氣。隨時通過檢查複選標記將答案標記爲已接受的答案 - 當它解鎖時:) – Jonast92 2015-02-23 18:19:49

+0

@Mike爲什麼你不接受答案? – Jonast92 2015-03-10 14:22:29

0

Centros是表的名稱,所以你要說:「刪除從Centros在哪裏...」