2012-06-23 80 views
2

我有一個問題。 我的數據庫表是這樣的:Mysql SELECT不同


| ID | Name    | Value | param | 
| 1 | Michael   | 290 | X | 
| 2 | John    | 300 | X | 
| 3 | Michael   | 270 | X | 
| 4 | John    | 280 | X | 
| 5 | Michael   | 256 | Y | 
| 6 | Michael   | 230 | Y | 
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ 

所以,我想用一種形式來選擇不同的PARAM但等於名稱的最新行。 例如,如果我搜索「Michael」,我想使用PHP來顯示參數X的最新值和參數Y的最新值(返回2行)。

Michael: Param Y: 230 
Michael: Param X: 270 

如果我搜索 「約翰」,我得到:

John: Param X: 280. 

代碼

$sql = "SELECT * FROM thetable WHERE name = 'Michael' ORDER BY ID DESC"; 
    $result = mysql_query($sql); 

現在我只想讓它只選擇了最新的行不同的參數。 在此先感謝。

回答

2

上市不會與變量n「PARAMS工作方法」。我想類似的東西可能工作:

SELECT 
t.* 
FROM Table1 t 
JOIN 
(SELECT 
      max(id) AS maxid 
    FROM Table1 
    GROUP BY name,param) x 
on x.maxid = t.id 
WHERE name='Michael' 

http://sqlfiddle.com/#!2/64dc4/11

+0

@ user1477040對不起,我的代碼*錯誤*,**現在請參閱編輯版本**。 – Cranio

0

使用極限,如果你想選擇只有一個行(希望我理解這個問題)

$sql = "SELECT * FROM thetable WHERE name = 'Michael' AND param = 'x' ORDER BY Value DESC LIMIT 1 
UNION 
SELECT * FROM thetable WHERE name = 'Michael' AND param = 'y' ORDER BY Value DESC LIMIT 1" 
+0

我想爲它顯示2個結果邁克爾(用於帕拉姆X和Y的值) – user1477040

+0

@ user1477040利用工會和LIMIT –

+0

@ user1477040我編輯了我的答案 –

1

使用UNION
SELECT * From table WHERE name='Michael' AND PARAM='X' ORDER BY ID DESC LIMIT 1
UNION
SELECT * From table WHERE name='Michael' AND PARAM='Y' ORDER BY ID DESC LIMIT 1

+0

這是好的,但不能解決一般的參數數量。 – Cranio