我有一个类似下面的表来存储图像。当图像是活动的配置文件图像时,配置文件设置为1.但是我需要将其余部分设置为0,这样只有一个图像的profile = 1,而其余图像为0。
DROP TABLE IF EXISTS image;
CREATE TABLE IF NOT EXISTS image (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
width INT(5) UNSIGNED NOT NULL,
height INT(5) UNSIGNED NOT NULL,
extension VARCHAR(10) NOT NULL,
created INT(11) UNSIGNED NOT NULL,
user_id INT(11) UNSIGNED NOT NULL,
profile INT(1) NOT NULL DEFAULT 0,
deleted INT(1) NOT NULL DEFAULT 0
) CHARACTER SET utf8;
ALTER TABLE image ADD INDEX (user_id);
我有没有一种有效的方法来实现这一目标?或者我是否需要执行2个查询并首先将所有图像设置为属于某个用户的profile = 0,然后将特定图像设置为具有该特定ID的profile = 1?
UPDATE image SET profile = 0 WHERE user_id = 1;
UPDATE image SET profile = 1 WHERE id = 9;
或者有更好的方法吗?