Heim >Backend-Entwicklung >PHP-Tutorial >mysql比较难的一个字段排序的问题

mysql比较难的一个字段排序的问题

WBOY
WBOYOriginal
2016-06-06 20:52:08840Durchsuche

某个字段的结果是json格式比如

["12312","我是我",0]

我希望按照12312这个值来进行排序,请问能实现么?

回复内容:

某个字段的结果是json格式比如

["12312","我是我",0]

我希望按照12312这个值来进行排序,请问能实现么?

如果你的应用比较简单,数据量也不大,我的建议是,把需要排序的字段单拎出来,作为一个索引字段。也就是

"12312" | ["12312","我是我",0]

如果你觉得,你的应用场景会越来越复杂,或者需要索引的数据量非常大,那么可以考虑MongoDB,直接把 数据反序列化,以每个字段的方式存进去,也就是

"12312" | "我是我" | 0

使用NoSQL还是要谨慎。。。能用MySQL搞定的,尽量用MySQL

首先MySQL不支持BSON也不支持JSON,即使存储JSON也是序列化之后的。所以排序的话得自己实现。无论是从MySQL端排序还是从脚本端排序,这都不是很好的实现方式,因为需要一个反序列化的操作。
其次你这样的存储方式是类似文档数据库的存储方式(就是NoSQL的一种),而MySQL是关系型数据库,所以临建一张表再将数据移出去是最好的方式。或者改用文档型数据库比如Mongodb。

参考 @gaosboy
如果你的数据量不大,而且只是为了简单的实现这个功能(不考虑效率)
order by cast(mid(fname, 3) as unsigned)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn