我有一个表是“任务”列表,第二个表是“任务路径”列表(当一个任务结束时,我知道接下来会授予哪个任务。)。这些任务不是按顺序存储的,因此我尝试根据一个任务结束和另一个任务开始的时间对它们进行排序。
任务
+----+--------------+--------------+ | id | title | missionID | +----+--------------+--------------+ | 1 | A Middle | quest234 | | 2 | The Start | quest567 | | 3 | A Middle 2 | quest987 | | 4 | The End | quest654 | +----+--------------+--------------+
任务路径
+----+--------------+--------------+ | id | grants | ends | +----+--------------+--------------+ | 1 | quest234 | quest567 | | 2 | quest987 | quest234 | | 3 | quest654 | quest987 | +----+--------------+--------------+
这就是我正在寻找的内容,“The Start”不在 QuestPath 表中,因此假定它是第一个任务
结果
+----+--------------+--------------+ | id | grants | missionID | +----+--------------+--------------+ | 1 | The Start | quest567 | | 2 | A Middle | quest234 | | 3 | A Middle 2 | quest987 | | 4 | The End | quest654 | +----+--------------+--------------+
最佳答案
试试这个:
select distinct Quests.*
from Quests
left join
QuestPath on Quests.missionID = QuestPath.grants
order by QuestPath.id
id
列 (2,1,3,4) 是来自 Quests
的原始 id
,而不是序列号或行号输出。
关于MySQL 基于第二个表列的 'quests' 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49434492/