我想在一个内部运行两个查询,我想你可以说。我想要做的是建立一个每个人有两次机会的评分系统。最少的数字是他们最好的。我需要做的是让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并列出它们。
答案 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