我正在做一些使用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
以上预期结果与WHERE条件上的序列匹配。 (在('安德森'坎贝尔')中的学生名称)Joy与Anderson匹配,Prank与Campbell匹配。但目前的结果是这样的:
Prank
Joy
现在,我不知道应该怎样做才能达到预期的效果。有没有人可以就这种情况给我一些想法或信息?
答案 0 :(得分:2)
您已陷入常见的SQL陷阱。 students
中的行和('Anderson', 'Campbell')
等集合的行没有内置顺序。服务器不知道任何内容即使您的查询以这种方式显示,Anderson
之前的Campbell
即将发布。
您唯一的办法是使用适当的ORDER BY
条款。如果没有ORDER BY
子句,结果将以正式不可预测的顺序显示。在您的情况下,在查询结束时ORDER BY student_name
将使您的行排序可预测。
不可预测的是一个复杂的想法。它更像是随机。 随机通常意味着结果每次都可能不同。 不可预测意味着它每次都是相同的,直到它不是。