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 個の変数「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を参照してください。

于 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

1 行だけを選択する場合は、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 に答える