当我执行“SELECT * FROM table”时,来自行的顺序来自哪里,是否有办法改变它?
故事: 我有这个网站,检索衣服尺寸,需要更新尺寸表。顺序是一个棘手的事情,因为一般规则可能是preg_match,我不愿意或有足够的技能来创建(订单应该是:数字ASC(0之前的00)然后之后第一个数字 varchar ASC )。
下一个选项是“添加订单列”,但其费用不仅仅是更新。
所以我开始更新,我插入的第一个首先显示。今天他们最后出现了。现在他们再次出现。订单在更新时也会保留。所以它不是“创建日期”,也不是“更新日期”。
更新:找到了如何在“选项”表格标签中的“更改表顺序”下重新排列PHPMyAdmin中的顺序,该选项卡解决了我当前的问题,但仍然想知道订单是否未更改。< / p>
答案 0 :(得分:1)
根据DBA Exchange的回答 https://dba.stackexchange.com/questions/6051/what-is-the-default-order-of-records-for-a-select-statement-in-mysql
在SQL世界中,顺序不是一组的固有属性 数据。因此,您无法保证RDBMS能够保证您的数据 以某种顺序回来 - 甚至以一致的顺序回归 - 除非您使用ORDER BY子句查询数据。
MySQL根据需要对记录进行排序,而不保证一致性。
但是观察商店系统算法似乎是根据存储顺序..
但是为了确保您必须使用ORDER BY指定所需的订单。做其他事情就是为自己设置不受欢迎的惊喜。
参考行结果的顺序,然后定义没有order by子句的顺序是ANSI的SQL定义不可预测的。从&#34;存储系统&#34;中检索行。关于特定策略的whitout。依赖于空间磁盘的分配算法和该磁盘空间上的分段映射(表空间)
参考select(*)中的列序列,这些列显示基于列表中的位置id
答案 1 :(得分:0)
执行select * ...
时,您将获得使用。
另外,您可以select col2, col1, col3 ....
获取您想要的其他列顺序
答案 2 :(得分:0)
没有ORDER BY子句,就没有特定的结果顺序。 ORDER BY FIELD会帮助你吗?有了它,您可以在订购该字段时指定一个确切的顺序
ORDER BY FIELD(dress_size, '00', '0', '1', 'AA', 'A','G', '4')
您指定要排序的特定列的确切顺序。
答案 3 :(得分:0)
ALTER TABLE语句更改了表的结构,它们不处理列/行本身的内容。因此,您可以使用ALTER更改数据类型或添加新列等.ALTER不是您要查找的内容。