2017-06-09 9 views
0

私はエントリごとに3つのフィールドを持つMySQLテーブルを持っています。 xとyは主キーと1つの値です。私は与えられた領域で最高の行を選択したいと思います。例としてMySQLとaspは、領域内で最も高い行を選択します。

: 表は次のようになります。

私は、x> = 2及びX < 4及びy> = 1と最も高いエントリを持つ行を取得するための要求をしたいですこの例では、x = 2、y = 3、value = 0,6の行になります。

は現在、私の.aspファイル内のコードは次のようになります。

if reqType="getDBMaxValue" then 
    resp="[ " 
    delim="" 
    'sSQL="SELECT MAX(value) AS value FROM "&tableName&" WHERE x >= "&xStart&" AND x <= "&xEnd&" AND y >= "&yStart&" AND y <= "&yEnd 
    sSQL="SELECT MAX(value) AS value FROM "&tableName&" WHERE x >= "&xStart&" AND x <= "&xEnd&" AND y >= "&yStart&" AND y <= "&yEnd 
    set rs=Conn.Execute(sSQL) 
    do until rs.EOF 
    obj="{ " & chr(34) & "value" & chr(34) & ": " & chr(34) & rs.Fields("value") & chr(34) 
    obj=obj & "} " 
    resp=resp & delim & obj 
    delim=" , " 
    rs.MoveNext 
    loop 
    resp=resp & " ]" 

    rs.Close 
    response.ContentType="application/json" 
    Response.Write(resp) 
end if 

これは正しい値を返しますが、私は、xとyを得ることはありません。このコードで

if reqType="getDBvalues" then 
    resp="[ " 
    delim="" 
    sSQL="SELECT * FROM "&tableName&" WHERE x >= "&xStart&" AND x <= "&xEnd&" AND y >= "&yStart&" AND y <= "&yEnd 
    set rs=Conn.Execute(sSQL) 
    do until rs.EOF 
    obj="{ " & chr(34) & "x" & chr(34) & ": " & chr(34) & rs.Fields("x") & chr(34) 
    obj=obj & ", " & chr(34) & "y" & chr(34) & ": " & chr(34) & rs.Fields("y") & chr(34) 
    obj=obj & ", " & chr(34) & "value" & chr(34) & ": " & chr(34) & rs.Fields("value") & chr(34) 
    obj=obj & "} " 
    resp=resp & delim & obj 
    delim=" , " 
    rs.MoveNext 
    loop 
    resp=resp & " ]" 

    rs.Close 
    response.ContentType="application/json" 
    Response.Write(resp) 
end if 

私は全部の行(または列)を受け取ります。

誰かが最大値の行を取得するためにMySQL文を書き留める方法を知っていますか?あなたのサンプル情報に基づいて

+1

、X = Y 2、= 3、値= 0.6の一致があるように見えませんか? x/y値の値は0,7です。私は何かを逃しているのでしょうか?あるいは、タイプミスがありますか? –

+0

はい、そのタイプミス – blisslfutz

答えて

0

SELECT * FROM my_table WHERE x BETWEEN... AND y BETWEEN... ORDER BY value DESC LIMIT 1

+0

ありがとう、これは私の問題を解決 – blisslfutz

関連する問題