复杂的删除

时间:2019-07-02 12:54:44

标签: mysql

我想删除表中的某些行。但是删除条件不是直接的。这只是1个表CUSTOMER:

CREATE TABLE customer (
    CUST_ID int(11) NOT NULL AUTO_INCREMENT,
    PRODUCT_CODE varchar(50) NOT NULL,
    USER_NAME varchar(150) NOT NULL,
    PRIMARY KEY (CUST_ID)
) ENGINE=InnoDB AUTO_INCREMENT=2455046 DEFAULT CHARSET=latin1;

这对我有用:

select cust_id from CUSTOMER where user_name = '20012';

然后在以下DELETE中使用生成的cust_id($ cust_id是查询1的结果)

delete from CUSTOMER where cust_id = $cust_id 

注意:这只能删除一个user_name。我也想在1个查询中执行此操作,而不是2个。

  CUSTOMER t1
  LEFT JOIN (
    SELECT
      cust_id id
    FROM
      CUSTOMER
    where
      user_name IN ('20012', '20013', '20014')
  ) t2 ON t1.cust_id = t2.id

以上内容显然无效。

1 个答案:

答案 0 :(得分:3)

您不必要地使逻辑复杂化。对于给定的user_name值,无需首先获取所有客户id,您只需过滤user_name值即可。就是这样:

DELETE FROM CUSTOMER WHERE user_name IN ('20012', '20013', '20014')