ニュートラルの派閥を持つプレーヤー名から一意のレコードを取得するストアド プロシージャ内に次のコードがあります。
SELECT
COUNT(DISTINCT Name) into @neutcount
FROM
dim5players
WHERE
Faction ='Neutral';
UPDATE dim5stats
SET Value = @neutcount
WHERE
Function = 'Neutral';
これはうまく機能します。問題は、Date というフィールドもあるということです。
一意の「名前」レコードからのランダムなレコードではなく、カウントにリストされるレコードの最新の日付を選択したいと考えています。
これは履歴テーブルであり、レコードの毎日の変化を記録します。名前は複数回表示される場合があります。最新のレコードだけでニュートラルの派閥を持つ最新のレコードだけをカウントする必要があります。一部の人々は時々派閥を変えます。私は彼らの最新の派閥だけを気にします。
これは構造です:
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;