我正在将玩家所做的所有动作与相关的游戏ID一起保存在表中。
还执行了移动的顺序。
表:
id | move | order
---+----------+------
1 | Attack | 1
1 | Defense | 2
1 | Defense | 3
1 | Fly | 4
2 | Attack | 1
例如:在游戏ID 1中,他首先攻击,防守,防守然后飞行。
现在,我要选择所有具有与我指定的时间顺序相同的游戏ID。
伪代码
SELECT DISTINCT id FROM Table
WHERE Player
first Attack
second Defense
third Defense
例如,即使认为未指定第四步Fly,伪代码也会返回ID 1。
假设您的意思是想要一组相同的初始移动,那么我认为这可以满足您的要求:
SELECT id
FROM (SELECT id, ARRAY_AGG(move ORDER BY "order") as moves
FROM t
WHERE order <= 3
) im
WHERE moves = ARRAY['Attack', 'Defense', 'Defense'];
这只是检查前三个动作。您也可以这样说:
SELECT id
FROM (SELECT id, ARRAY_AGG(move ORDER BY "order") as moves
FROM t
WHERE order <= CARDINALITY(ARRAY['Attack', 'Defense', 'Defense'])
) im
WHERE moves = ARRAY['Attack', 'Defense', 'Defense'];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句