在SQL中拾取唯一记录

在SQL中拾取唯一记录,sql,Sql,假设我有一张有多条人名记录的表格,我每个月都会抽出一名获奖者。什么是SQL中的查询,我可以使用它来每个月提取一个唯一的记录,而这个人不会在下个月被提取。我不想删除此人的记录。创建一个新列作为一个标志命名为“prizeFlag”之类的东西,使其为布尔值,仅取0和1或任意值,使其默认值为0表示尚未获得奖品 当您选择一个随机列时,使用1更新此字段意味着获奖 当您下个月选择一个随机列时,请在WHERE子句中添加一个条件,说明prizeFlag不等于1,以避免重复应存储某人是否已获胜。一个日期可以让人们在

假设我有一张有多条人名记录的表格,我每个月都会抽出一名获奖者。什么是SQL中的查询,我可以使用它来每个月提取一个唯一的记录,而这个人不会在下个月被提取。我不想删除此人的记录。

创建一个新列作为一个标志命名为“prizeFlag”之类的东西,使其为布尔值,仅取0和1或任意值,使其默认值为0表示尚未获得奖品
当您选择一个随机列时,使用1更新此字段意味着获奖

当您下个月选择一个随机列时,请在WHERE子句中添加一个条件,说明prizeFlag不等于1,以避免重复

应存储某人是否已获胜。一个日期可以让人们在10年后再次获胜

ALTER TABLE ADD won DATE;
一种可移植的方法是在SQL之外使用随机数函数

SELECT MIN(id), MAX(id), COUNT(*) FROM persons
使用随机数可以获得下一个有效ID

SELECT MIN(ID) FROM persons WHERE won NOT IS NULL AND ID >= ?
int randomno = minId + new Random().nextInt(maxId - minId);
preparedStatement.setInt(1, randomno)

UPDATE persons SET won = CURRENT_DATE WHERE ID = ?

创建一个单独的表,在其中存储每个获奖者的姓名和日期。添加一列可能是前一个获奖者,并在挑选时更新该列,然后选择前一个获奖者列为空值的记录或您的任何选择。若要先编写查询,您必须考虑如何构造数据。考虑一下,编辑您的问题,添加您的表或表结构,以便其他人能够提供帮助。