gpt4 book ai didi

php - Mysql - 唯一索引或列

转载 作者:行者123 更新时间:2023-11-29 13:08:07 25 4
gpt4 key购买 nike

我想创建一个包含一些数据的 Mysql 表。所有数据均按 3 列条目排序,所有查询都依赖于这些列,例如

SELECT * FROM `mytable` WHERE `column1`=0 AND `column2`=0 AND `column3`=0

应该只返回结果。我的问题是,当插入新数据并且新数据与表中的其他数据具有相同的值时,可能会出现重复,因此上面的查询将返回两个结果。我的代码将使用第一个结果,因此如果插入错误,新数据可能会覆盖已经存在的数据。我想通过将column1、column2和column3联合到BIGINT类型的column4上来防止这种情况(如果需要更大的索引,我可以更改为varbinary或其他东西)并以这种方式更改我的请求查询,例如

SELECT * FROM `mytable` WHERE `column1`=0 AND `column2`=1 AND `column3`=2

变成了

SELECT * FROM `mytable` WHERE `column4`=((0 << 16) | (1 << 8) | 2)
//Note: column1, column2 and column3 are all TINYINTs, therefore the << 8 and << 16

等等。但这使得查询的可读性较差,并且我的代码更难以理解。有什么想法可以让我的表格保持原样(包含 3 列)并防止数据重复吗?

提前致谢。

最佳答案

我不确定这是否是您想要的,但这里不可能添加重复项。

CREATE TABLE IF NOT EXISTS `table` (
`id` INT NOT NULL AUTO_INCREMENT,
`colA` VARCHAR(50) NULL,
`colB` VARCHAR(50) NULL,
`colC` VARCHAR(50) NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `colABC_UNIQUE` (`colA` ASC, `colB` ASC, `colC` ASC))
ENGINE = InnoDB

关于php - Mysql - 唯一索引或列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com