Php 唯一状态,其中x=y mysql查询

Php 唯一状态,其中x=y mysql查询,php,mysql,sql,select,Php,Mysql,Sql,Select,我正在尝试在我的数据库中创建一些独特的东西 首先,我检查所有必需的行SELECT*FROM table WHERE x='y' 这给了我10行(作为示例)。现在我要做的是UPDATE一个只包含10行中的一行的字段,并在执行更新后禁止任何进一步的更新 例如,假设10行是照片,WHERE子句是日期。所以在某一天,只拍了10张照片。我已经创建了一个名为fave的字段,我只想选择其中一个图像。基本上这是那天最好的照片选择 如何禁用此服务器的所有未来更新?为了防止我为任何给定日期选择多个收藏夹?表中的每一

我正在尝试在我的数据库中创建一些独特的东西

首先,我检查所有必需的行
SELECT*FROM table WHERE x='y'

这给了我10行(作为示例)。现在我要做的是
UPDATE
一个只包含10行中的一行的字段,并在执行更新后禁止任何进一步的更新

例如,假设10行是照片,
WHERE
子句是日期。所以在某一天,只拍了10张照片。我已经创建了一个名为
fave
的字段,我只想选择其中一个图像。基本上这是那天最好的照片选择


如何禁用此服务器的所有未来更新?为了防止我为任何给定日期选择多个收藏夹?

表中的每一项都应该有区别于其他项的内容。。。。像身份证一样


当你找到一个你想要更新的。。。只需更新一个唯一的列,或使其唯一的一系列列。

唯一索引会有所帮助。

请看一个简单的例子。
假设我们有一张这样的桌子:

CREATE TABLE photos(
  photo_id int primary key ,
  dat date not null,
  fave enum ('y')
);
其中
fave enum('y')
声明列
fave
可以具有“y”值或NULL。
然后在dat+fave列上定义唯一索引:

CREATE UNIQUE INDEX only_one_fav ON photos(  dat, fave ); 
索引只允许一行具有给定的dat+fav组合,禁止两个相同的行-但是这不适用于null。

请看这个演示:

有两个日期,每个日期拍5张照片。

尝试取消修复此演示中的最后一个更新命令,并点击一个
构建模式
按钮-您将收到一条错误消息-MySql不允许在同一日期使用两张最喜爱的照片id:2+4:“2013-11-02”。

谢谢,我想我可以解决这个问题,所以我接受它作为答案。
CREATE TABLE photos(
  photo_id int primary key ,
  dat date not null,
  fave enum ('y')
);

insert into photos( photo_id, dat ) values
(1,'2013-11-02'),(2,'2013-11-02'),(3,'2013-11-02'),(4,'2013-11-02'),(5,'2013-11-02'),
(11,'2013-11-05'),(12,'2013-11-05'),(13,'2013-11-05'),(14,'2013-11-05'),(15,'2013-11-05');

CREATE UNIQUE INDEX only_one_fav ON photos(  dat, fave );

UPDATE photos SET fave = 'y' WHERE photo_id = 2;

UPDATE photos SET fave = 'y' WHERE photo_id =14;

-- UPDATE photos SET fave = 'y' WHERE photo_id = 4;