php - Varchar 类型的 MySql 复合唯一索引

标签 php mysql sql unique unique-index

这是我的情况:

• I have a table of users <br><br>
• I have a table of movies <br><br>
• I have a table of user_movies that associates users to movies that stores a frequently changing "score" column on each record.<br><br>
• I need to be able to bulk update the user_movies table for speed and to do so I believe I need a unique index to be able to pull off bulk updates like this.<br><br>
• Considering each user_movie combination is unique, would it be possible to do 

做类似 (User_id--->) uid_mid (<----movie_id) 的事情作为唯一标识符?如果是这样,如何将现有表转换为此表?

最佳答案

我想有一种方法可以使用两列索引来解决您的问题,但是......

我想回答最初的问题并假设您确实想将这些列合并为一个,我建议考虑如下内容:

ALTER TABLE user_movies ADD COLUMN new_id VARCHAR(250);

UPDATE user_moves SET new_id=CONCAT(CAST(user_id as CHAR(125)), LPAD(CAST(move_id as CHAR(125)),125,'0'));

CREATE UNIQUE INDEX myindex ON user_movies(new_id);

数字 250 和 125 当然是任意的,但您希望它们足够大以适合您的实际 ID。我正在填充第二个 id,以确保它们确实是唯一的(因为我们不希望 user_id=55/movie_id=66 获得与 user_id=5/movie_id=566 相同的 id)。

关于php - Varchar 类型的 MySql 复合唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482274/

相关文章:

php - 了解 Twitter API 的 "Cursor"参数

php - Mysql 查询在特定情况下不起作用

php - 需要分组到数组中,MySQL表中相同的值组

php - 隐藏产品价格和添加到购物车按钮,但不隐藏 WooCommerce 中未注册用户的变体

MySQL If else 构造语法

php - MySQL 查询将列中所有值的长度设置为 12

mysql - 查询 Shoretel 报告中的多个 SELECT CASE 语句

MySQL - 事务和锁中的互斥?

php - 从一个表到另一列的不同表中检索数据

php - 将 X 和 Y 插入尚不存在的 MySQL 数据库