从数据库中选择最少的数字

时间:2016-03-01 16:30:36

标签: php mysql algorithm

我想在一个内部运行两个查询,我想你可以说。我想要做的是建立一个每个人有两次机会的评分系统。最少的数字是他们最好的。我需要做的是让php查询为每个人选择最小的数字,然后显示3个最小数字的人的3个名字。

我猜我需要使用这样的查询来获得每个人的最小数字:

$sql = mysql_query("SELECT LEAST(MIN(timeone),MIN(timetwo))FROM table1");

(也许代码也不对)

但在此之后我很难过如何让它显示与3个最小数字相关联的名称。

所有数据都在同一张表中

例如

name    number1    number2
1        10           8
2         4           7
3         12          11
4         3            17

因此它将确定名称1的最小数字是8,名称2是4,名称3是11,名称4是3.

然后它将确定三个最小的是名称1,名称2,名称4并列出它们。

2 个答案:

答案 0 :(得分:1)

所以你可以通过使用这样的顺序和限制来实现这个目标:

SELECT name,LEAST(number1,number2) as Smaller FROM table1
ORDER BY smaller 
LIMIT 3;

或者只是为了得到他们的名字:

SELECT name FROM table1
ORDER BY LEAST(number1,number2) 
LIMIT 3;

答案 1 :(得分:0)

我不知道这是否是最佳解决方案,因为我自己不是dba,但你可以使用:

SELECT min(col_alias) AS min_value FROM (

    SELECT col1 AS col_alias FROM yourtable
    UNION ALL
    SELECT col2 FROM yourtable

) vw

另一个(更好的IMO)解决方案,将从yourtable中选择所有分钟,然后使用来自php的min函数:

$qry = mysql_query("SELECT min(col1) as minCol1, min(col2) AS minCol2 FROM yourtable");
$rs = mysql_fetch_assoc($qry);
$minNumber = min($rs);

注意:不推荐使用mysql_*函数。或者,您可以使用mysqli_*功能或迁移到 PDO