MySQL:不为第 1 列和第 2 列插入重复项

标签 mysql insert where-clause join

创建表如下,其中column1和column2都是外键值。

ID|列1|列2|

0 | 1 | 1

1 | 1 | 2

2 | 1 | 2

3 | 2 | 2

当我插入时,我不希望出现与行 ID #2 相同的重复项。

我想我可以这样插入:

INSERT INTO tablename (column1, column2) VALUES (@last_id_in_col1key,@last_id_in_column2key) <*>

然后我想要这样的东西:

<*> where column1 and column2 are not equal to @last_id_in_col1key and @last_id_in_column2key

有办法将其添加到我的表中还是必须是单独的命令?

alter table tablename add unique index(column1, column2);

最佳答案

您似乎正在创建一个所谓的联接表,其目的是将 table1 中的项目与 table2 中的项目进行多对多关联。

这通常通过两列表来完成。该表中的两列都是主键的一部分。你会这样做:

CREATE TABLE JoinTable ( 
   first_id  INT NOT NULL , 
   second_id INT NOT NULL , 

   PRIMARY KEY (first_id, second_id),

   FOREIGN KEY (first_id) 
    REFERENCES first(first_id)
    ON DELETE CASCADE,

   FOREIGN KEY (second_id) 
    REFERENCES second(second_id)
    ON DELETE CASCADE
 )

执行此操作时,您将无法插入重复值。

关于MySQL:不为第 1 列和第 2 列插入重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915839/

相关文章:

php - 这是什么意思?我该如何解决?未捕获的异常 'PDOException',消息为“SQLSTATE[42000]

mysql - Appserv 命令行批处理

mysql - 像 mysql 一样将大型 csv 加载到 RDB 的推荐方法

mysql - 将 MySQL 'update' 语句转换为 'insert' 语句

powershell - 简单示例 : Expressions are only allowed as the first element of a pipeline

mysql - 拥有大量记录的数据库会影响读取速度吗? (MySQL)

mysql - 更改查询中单独列中的项目名称以使分组更容易

mysql无法插入未签名主键为零的记录

python - 根据条件在嵌套列表中插入缺失元素 - Python

SQL过滤条件在连接条件或where子句中哪个更有效