Mysql 使结果排序与(a,b,c)条件中的给定WHERE匹配的查询

Mysql 使结果排序与(a,b,c)条件中的给定WHERE匹配的查询,mysql,database,sql-order-by,Mysql,Database,Sql Order By,我正在做一些工作,以填补文件使用MySQL数据库。我想做的是用给定的WHERE条件生成结果。学生表如下: student +-----+------------+-----------------+-----+ | id | nickname | student_name | ... | +-----+------------+-----------------+-----+ | 1 | Joy | Anderson

我正在做一些工作,以填补文件使用MySQL数据库。我想做的是用给定的WHERE条件生成结果。学生表如下:

                  student
+-----+------------+-----------------+-----+
| id  |  nickname  |   student_name  | ... |
+-----+------------+-----------------+-----+
|  1  |     Joy    |     Anderson    | ... |
|  2  |    Prank   |     Campbell    | ... |
+-----+------------+-----------------+-----+
我对数据库进行了以下查询:

SELECT nickname FROM students WHERE student_name in ('Anderson', 'Campbell')
然后,我期待这样的结果:

Joy
Prank
Prank
Joy
上述预期结果与WHERE条件下的序列匹配。(学生名字在('Anderson','Campbell'))Joy与Anderson匹配,恶作剧与Campbell匹配。但目前的结果是这样的:

Joy
Prank
Prank
Joy

现在,我不知道该怎么做才能达到预期的效果。有人能给我一些关于这种情况的想法或信息吗?

您陷入了一个常见的SQL陷阱。
students
中的行以及
('Anderson',Campbell')
等集合的成员没有内置顺序。服务器不知道
Anderson
出现在
Campbell
之前,即使您的查询是这样显示的

您唯一的办法是使用适当的orderby子句。如果没有ORDER BY子句,结果将以形式上不可预测的顺序显示。在您的情况下,查询结束时的
按学生姓名排序将使您的行排序可预测


不可预测是一个复杂的概念。这就像是随机的,只是更糟。“随机”通常意味着每次的结果可能不同。不可预测意味着每次都是一样的,直到不一样为止

按字段排序(…)
当前结果有什么问题?感谢您的解释+1.