首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php和mysql对mysql数据库进行高级排序和搜索

使用php和mysql对mysql数据库进行高级排序和搜索
EN

Stack Overflow用户
提问于 2013-04-08 20:44:47
回答 4查看 403关注 0票数 1

我正面临着一个独特的挑战。

我有一个有100个数字的表格,叫做HUNDREDNUMBERS。我想选择最好的季度(75到100个数字),并将它们放入另一个名为BESTQUARTER的表中。

我还想选择最差的季度(1到25个数字),我想把它们放到另一个名为WORSTQUARTER的表中。

这是我的Mysql代码,到目前为止,

代码语言:javascript
运行
复制
$Extract_Data = "
CREATE  TABLE $BESTQUARTER  
SELECT 
HUNDREDNUMBERS.number
FROM 
HUNDREDNUMBERS order by 
HUNDREDNUMBERS.number desc LIMIT 25 ";
$QuerySuccess =  mysql_query($Extract_Data, $connection);

另一张桌子..。

代码语言:javascript
运行
复制
 $Extract_Data = "
 CREATE  TABLE $WORSTQUARTER  
 SELECT 
 HUNDREDNUMBERS.number
 FROM 
 HUNDREDNUMBERS order by 
 HUNDREDNUMBERS.number asc LIMIT 25 ";
 $QuerySuccess =  mysql_query($Extract_Data, $connection);

问题是这个脚本并不是每次都是100%正确的。请注意两个查询中的ASC和DESC。这是一种尝试对数字进行排序的巧妙方法。

顺便说一句,HUNDREDNUMBERS表中的一些数字有小数点。我需要两个新表BESTQUARTER和WORSTQUARTER中的数据进行进一步处理。

非常感谢您的任何帮助。

EN

Stack Overflow用户

发布于 2013-04-08 21:02:11

您正在进行字符串比较,并且这些比较遵循与数字数据类型不同的规则;我建议您更改排序表达式:

代码语言:javascript
运行
复制
ORDER BY CAST(HUNDREDNUMBERS.number AS UNSIGNED) DESC|ASC

如果需要分别支持负数或浮点数,也可以使用SIGNEDDECIMAL(M, N)来代替UNSIGNED

或者(也是最好的),您可以将number列更改为按其自身正确排序的类型;VARCHAR应该主要用于文本。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15879380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档