我有mysql表,记录是
PRODUCT_TITLE
2 PRI + 8端口FXS PSTN模拟器Adv
2 PRI + 8端口FXS PSTN模拟器
2 PRI + 4端口FXS PSTN模拟器Adv
2 PRI + 4端口FXS PSTN模拟器
2 PRI + 32端口FXS PSTN模拟器Adv
2 PRI + 32端口FXS PSTN模拟器
现在我想使用mysql查询按以下顺序获取这些记录的结果
2 PRI + 4端口FXS PSTN模拟器
2 PRI + 4端口FXS PSTN模拟器Adv
2 PRI + 8端口FXS PSTN模拟器
2 PRI + 8端口FXS PSTN模拟器Adv < br /> 2 PRI + 32端口FXS PSTN模拟器
2 PRI + 32端口FXS PSTN模拟器高级
我已经测试了演员表,转换,顺序(product_title + 0)等。但我的愿望结果不会来。任何人都可以帮忙。
答案 0 :(得分:0)
我不确定标题末尾的'Adv',但我认为这应该有效;
SELECT * FROM table ORDER BY product_title ASC
答案 1 :(得分:0)
您是否尝试按子字符串排序?
... ORDER BY SUBSTRING(product_title, 0, 4), SUBSTRING(product_title, 8, 14)
(您可能需要调整索引并为整个product_title添加另一个约束,现在无法测试)
答案 2 :(得分:0)
您执行的任何排序都不会像您预期的那样处理字符串,因此34
将在4
之前出现,但可以执行此操作:
SELECT * FROM products
ORDER BY
convert(SUBSTRING(product_title, 9, 2), UNSIGNED INTEGER)
这会将4
,8
,32
转换为整数,然后按顺序排序 HOWEVER 这很麻烦并依赖于您的数据格式。
如果你的数据有所不同,我会考虑通过PHP来做这件事。
注意:您也可以通过数据中的第一个数字调整此顺序。