0

查询:

select title from gamelist where match (title) against ('super mario luigi');

回报:

+-----------------------------------+
| title                             |
+-----------------------------------+
| Super Mario and Luigi             |
| Super Mario Luigi: Inside Story   |
| New Super Mario Bros.             |
| Mario and Luigi: Partners In Time |
| Luigi: Mansion                    |
+-----------------------------------+
5 rows in set (0.00 sec)

超级马里奥路易吉:内幕故事应该出现在超级马里奥和路易吉之前。我究竟做错了什么?

谢谢!

4

2 回答 2

2

您没有指定结果应该如何排序。在这种情况下,返回的结果顺序是未定义的。在您的情况下添加一个明确的ORDER BY, (如果我理解正确的话)

select title from gamelist where match (title) against ('super mario luigi') 
 order by title DESC;
于 2011-04-13T19:44:15.267 回答
0

根据定义,SQL 不保证排序。正如@Pekka 所说,如果您希望以特定方式对结果进行排序,则必须指定它。

一般来说,符合 SQL 的数据库会以相同的顺序从一个查询执行到另一个查询返回数据,但这是因为引擎从一个运行到另一个运行的操作方式相同,并且SQL 规范没有明确保证。如果您的表应用了新索引或者它被转储并重新加载,如果您的查询不使用 ORDER BY 子句,数据很可能以与上次不同的顺序返回。

于 2011-04-13T19:51:13.600 回答