我的存储过程中有以下内容,它从具有中立派系的玩家名称中检索唯一记录:
SELECT
COUNT(DISTINCT Name) into @neutcount
FROM
dim5players
WHERE
Faction ='Neutral';
UPDATE dim5stats
SET Value = @neutcount
WHERE
Function = 'Neutral';
这可以找到和花花公子。问题是我有一个名为Date的字段 我想选择要在计数中列出的记录的最新日期,而不是从唯一的“名称”记录中选择随机记录。
这是一个历史记录表,它记录记录的每日更改,其中Name可以多次出现。我只需要计算最新的记录,这些记录只有最新的记录。有些人不时改变派系。我只关心他们最新的派系。
这是结构:
CREATE TABLE `dim5players` (
`id` CHAR(64) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`rank_name` VARCHAR(20) NULL DEFAULT NULL,
`level` INT(11) NOT NULL,
`defender_rank_id` INT(11) NULL DEFAULT NULL,
`Faction` VARCHAR(15) NOT NULL,
`Organization` VARCHAR(100) NULL DEFAULT NULL,
`Date` DATE NOT NULL,
`Updated` BIT(1) NOT NULL,
UNIQUE INDEX `id_UNIQUE` (`id`) USING HASH,
INDEX `name_index` (`name`) USING HASH,
INDEX `date_index` (`Date`) USING HASH,
INDEX `updated_index` (`Updated`) USING HASH,
INDEX `faction_index` (`Faction`) USING HASH
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
答案 0 :(得分:1)
在与迈克尔讨论后,我想我想出了他的需求:
“我想要每个名字的最后更新记录”
SELECT
name ,
MAX(Date) as last_date
FROM
dim5players
WHERE
Faction ='Neutral'
GROUP BY
name
“我只想计算每个仍然持有中立派的NAME的最新日期”
SELECT
COUNT(last_date)
FROM (
SELECT
name ,
MAX(Date) as last_date
FROM
dim5players
WHERE
Faction ='Neutral'
GROUP BY
name
) as tmp
@Michael:如果我理解你的要求,请告诉我