我想删除表中的某些行。但是删除条件不是直接的。这只是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
以上内容显然无效。
答案 0 :(得分:3)
您不必要地使逻辑复杂化。对于给定的user_name值,无需首先获取所有客户id,您只需过滤user_name值即可。就是这样:
DELETE FROM CUSTOMER WHERE user_name IN ('20012', '20013', '20014')