4

私はphp初心者です私を助けてください..

私は以下のようなmysqlレコードを持っています

id   name     value_1   value_2
 1   rakesh   100      50
 2   david    150      10
 3   richard   0       0
 4   michael   0       0  

最後のレコード value_1 に何らかの計算をさせたいのですが、最後のレコード value_1==0 の場合は、上位の value_1 (value_1=150) を取得する必要があることを意味します

私は以下のコードを使用しますが、最後の値しか取得しません

$get=mysql_query("SELECT MAX(id) FROM table_name ");
$got = mysql_fetch_array($get);
$next_id = $got['MAX(id)'];

ここで 3D リチャード value_1==0 を取得しますが、2 番目のデビッド value_1 150 が必要です

事前に感謝してください...

4

3 に答える 3

5

常に最大のIDを選択しているため、クエリは最後の行を提供しています。

それを試してください:

SELECT * FROM table_name WHERE value_1 > 0 ORDER BY value_1 DESC LIMIT 1
  • 行全体が選択されるため、追加のクエリを作成する必要はありません。
  • WHERE value_1> 0 は、value_1が 0 より大きい行のみを選択します。ただし、そのようなレコードが存在することを前提としています。これがあなたのケースでない場合はお知らせください。
  • ORDER BY value_1 DESCvalue_1行を降順で並べ替えるようにクエリに指示すると、目的の行が一番上になります。
  • LIMIT 1最初の行のみを選択します。
于 2013-03-25T09:01:00.120 に答える
2

あなたが望むように聞こえます:

SELECT MAX(id) FROM table_name WHERE value_1 <> 0

value_10以外の最大 ID を選択します

于 2013-03-25T09:01:24.147 に答える
2

これを試して :

$get=mysql_query("SELECT value_1 FROM table_name 
                  WHERE  value_1 != 0 
                  ORDER BY id DESC 
                  LIMIT 1");

私は実際に質問を理解していませんでした。別の結果が得られる別の回答を次に示します。

$get=mysql_query("SELECT value_1 FROM table_name 
                  WHERE  value_1 != 0 
                  ORDER BY value_1 DESC 
                  LIMIT 1");

両方のクエリとの違いは、一方がそうでORDER BY id DESCあり、他方がそうであるということですORDER BY value_1 DESC

于 2013-03-25T09:01:46.443 に答える