select *  from xty_orders a where ORDER_STATUS= '已校对' and PATIENT_ID in 
(select PATIENT_ID from xty_orders b  where ORDER_STATUS = '已停止'  GROUP BY PATIENT_ID HAVING count(PATIENT_ID) > 1)上面检索正常,我改成删除就报错,为什么???
delete  from xty_orders a where ORDER_STATUS= '已校对' and PATIENT_ID in 
(select PATIENT_ID from xty_orders b  where ORDER_STATUS = '已停止'  GROUP BY PATIENT_ID HAVING count(PATIENT_ID) > 1)1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a where ORDER_STATUS= '已校对' and PATIENT_ID in 
(select PATIENT_ID from xt' at line 1

解决方案 »

  1.   

    https://blog.csdn.net/chs_jdmdr/article/details/46708917
      

  2.   

    delete  from xty_orders a where ORDER_STATUS= '已校对' and PATIENT_ID in 
     (SELECT PATIENT_ID FROM (select PATIENT_ID from xty_orders b  where ORDER_STATUS = '已停止'  GROUP BY PATIENT_ID HAVING count(PATIENT_ID) > 1))
      

  3.   

    MYSQL的DELETE有一个特性,举例如下:
    DELETE TABLE_A T1 WHERE T1.ID IN (SELECT T2.ID FROM TABLE_A T2);
    这样直接关联相同的表删除就会报错,再套一层就好了,例如:
    DELETE TABLE_A T1 WHERE T1.ID IN (SELECT ID FROM (SELECT T2.ID FROM TABLE_A T2));