使用连接表删除

时间:2015-08-17 14:27:18

标签: php mysql join sql-delete

我这里有两个表结构:

employee 
(emp_id INT AUTO_INCREMENT PRIMARY KEY,
emp_name VARCHAR(100),
emp_ic VARCHAR(20),
emp_phone VARCHAR(20),
emp_address VARCHAR(200))

employee_medical
(id INT AUTO_INCREMENT,
emp_id INT,
medical_notes TEXT,
PRIMARY KEY (id),
FOREIGN KEY (emp_id) REFERENCES employee(emp_id))

我想删除两个表emp_id中的行但是当我尝试以下操作时它不起作用。

$query = "DELETE employee, employee_medical
FROM employee
LEFT JOIN employee ON employee.emp_id = employee_medical.emp_id
WHERE emp_id='$id'";
  

错误:不唯一的表/别名:'employee'

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您的查询错误。它不应该是DELETE employee FROM employee,而只是DELETE FROM employee

您的JOIN也不正确,因为您似乎正在尝试将相同的2个表连接在一起(您使用employee加入employee)。

最后,在WHERE子句中,您应该指定应该从哪个表中检查emp_id。此外,在这种情况下,您不需要$id周围的单引号。这是一个数字,而不是一个字符串。

$query = "DELETE FROM employee
LEFT JOIN employee_medical ON employee.emp_id = employee_medical.emp_id
WHERE employee.emp_id=$id";

请注意this question,我相信这符合您的利益。 DELETE CASCADE可能是您需要的,而不是JOIN

答案 1 :(得分:0)

我的偏好是明确要删除的表(以及使用表别名)。

DELETE e, em
    FROM employee e LEFT JOIN
         employee_medical em
         ON e.emp_id = em.emp_id
WHERE e.emp_id = $id;