2015-02-23 131 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在哪里...”