在SQL中选择唯一记录

时间:2019-02-20 08:28:17

标签: sql

说我有一张桌子,上面有多个人的名字记录,我每个月都会选出一位获奖者。什么是SQL查询,我可以使用该查询,这样我每个月都会选择一个唯一的记录,而该人不会在下个月被选中。我不想删除该人的记录。

2 个答案:

答案 0 :(得分:1)

创建一个新列作为标志,其名称类似于“ prizeFlag”,使其布尔值仅取0和1或任意值,使其默认值为0表示尚未获得奖品
当您选择随机列更新时,该字段的编号为1,表示有奖赏 当您在下个月选择随机列时,请在 WHERE 条款中添加一个条件,说PrizeFlag不等于1以避免重复

答案 1 :(得分:0)

应该存储一个人是否已经赢了。 日期可以让人们说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 = ?