MySQL 基于第二个表列的 'quests' 顺序

标签 mysql sql

我有一个表是“任务”列表,第二个表是“任务路径”列表(当一个任务结束时,我知道接下来会授予哪个任务。)。这些任务不是按顺序存储的,因此我尝试根据一个任务结束和另一个任务开始的时间对它们进行排序。

任务

+----+--------------+--------------+
| 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/

相关文章:

mysql - 从 mySQL 表中排除结果

php 登录脚本如果返回 else 即使登录信息在 db 中是正确的

mysql - 在 MySQL 中创建带有右手约束的左外连接

mysql - str_to_date 不起作用

php - 对于 Doctrine,使用 DQL 而不是 SQL 有什么好处?

mysql - sql函数输入

mysql - 连接两个表并更新列值

使用左连接时 MySQL 限制 "main"结果?

java - Tomcat 和 Ajax 问题

sql - Typeorm - 通过多对多关系查找条目