2016-03-01 39 views
0

我試圖在一個內運行兩個查詢我想你可以說。我想要做的是建立一個評分系統,每個人都有兩次機會。最少的數字是他們最好的。我需要做的是爲php查詢選擇每個人的最小數字,然後顯示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

如果價值是捆綁的? – Strawberry

回答

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的分鐘並且,然後,使用min函數從PHP:

$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

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; 
+0

我確實相信那就是我想要的!謝謝! – user2089016

+0

沒問題,如果我的答案幫助了你,我會很感激,如果你批准它 – Yossi