2

我有个问题。我的数据库表是这样的:


| 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    |
 ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

所以,我想使用一个表单来选择具有不同参数但名称相同的最新行。例如,如果我搜索“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);

现在我只想让它只选择具有不同参数的最新行。提前致谢。

4

3 回答 3

2

列出的方法是否不适用于 n 变量“参数”。我认为类似的东西可能会起作用:

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

于 2012-06-23T16:49:03.770 回答
1

使用联合
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

于 2012-06-23T16:34:04.370 回答
0

如果您只想选择一行,请使用 LIMIT (希望我理解这个问题)

$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"
于 2012-06-23T16:30:01.420 回答