MySQL如何删除由两个列构成的组合主键的多行?


<!–

–>

MySQL如何删除由两个列构成的组合主键的多行?

在MySQL中删除行是非常常见的任务。通常,我们可以使用DELETE语句删除一行。然而,当表中有一个由多列组成的复合主键时,删除行变得更加复杂。

让我们来看看如何在MySQL中删除具有两个列作为复合主键的多行。

1. 通过使用IN和子查询

(adsbygoogle = window.adsbygoogle || []).push({});

我们可以使用IN和子查询来删除具有两个列作为复合主键的多行。

例如,我们有一个包含两个列作为主键的表:

CREATE TABLE users (
   id INT NOT NULL,
   email VARCHAR(255) NOT NULL,
   name VARCHAR(255) NOT NULL,
   PRIMARY KEY (id, email)
);

假设我们要删除多个用户,包括(id=1, email=’alice@example.com’)和(id=2, email=’bob@example.com’),我们可以使用以下代码:

DELETE FROM users
 WHERE (id, email) IN ((1, 'alice@example.com'), (2, 'bob@example.com'));

2. 使用INNER JOIN

我们可以使用INNER JOIN来删除具有两个列作为复合主键的多行。

例如,我们有一个包含两个列作为主键的table:

(adsbygoogle = window.adsbygoogle || []).push({});

CREATE TABLE users (
   id INT NOT NULL,
   email VARCHAR(255) NOT NULL,
   name VARCHAR(255) NOT NULL,
   PRIMARY KEY (id, email)
);

假设我们要删除多个用户,包括(id=1, email=’alice@example.com’)和(id=2, email=’bob@example.com’),我们可以使用以下代码:

DELETE u1 FROM users u1
 INNER JOIN users u2 ON u1.id = u2.id AND u1.email = u2.email
 WHERE u1.id IN (1, 2) AND u1.email IN ('alice@example.com', 'bob@example.com');

阅读更多:

总结

删除具有两个列作为复合主键的多行可能会更加困难。但是,使用IN子查询和INNER JOIN可以帮助我们解决这个问题。现在你已经知道如何在MySQL中删除具有两个列作为复合主键的多行,请放心使用这些方法吧!