1
1
我知道你想要什么,但不能真正拿出完美的解决方案。 以下是我的两个选择:
|
2
5
首先,重要的是要知道,在没有逐条订购的情况下, SQL标准没有规定SQL实现以任何特定顺序生成行。 ,事实上,对于类似的查询,甚至没有期望生成的订单是一致的! 因此,依赖实现提供的“自然顺序”的想法通常是危险的,除非特定DBMS生产者明确记录(我不相信MySQL就是这样),否则这种“自然顺序”随时都可能发生变化(任何新版本、数据库中的任何内容变化,甚至!) 但是,有一个处理空值的技巧:
其中“zzzzzz”是大于或小于“sort”列的任何预期值的值,继续将空行放在末尾或开头。我们通常使用这种技术来覆盖MySQL的默认行为,即将空值视为最小值,因此将第一个放在“asc”排序中,最后一个放在“desc”排序中。
也可以为排序添加一个额外的列,例如
|
3
2
如果没有ORDERBY子句,就无法保证行的返回顺序。它们通常按照插入的顺序返回,但同样,这不是您真正可以依赖的东西。最好的办法是添加一个自动递增的ID,作为备份进行排序。这将允许您根据插入顺序进行排序,如果您希望备份排序是这样的话。 |
4
0
为了确保索引用于排序,您还可以尝试以下方法:
这应该在99%的情况下有效,但是你不应该过分依赖于空值将在最后出现(因为这不是官方保证)。 |
hello_programmers · Mysql从其他表输出一列 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
Kugelfisch · 用php为数据库加密数据 1 年前 |