0

tblCust にある場合

c_id       Option         Numbers
10         1              2
5          1              1
10         2              1

c_id = 10 の場合、Numbers が最大のオプションを返したいと思います。試してみました

 SELECT Option, MAX(Numbers) FROM tblCust WHERE c_id = 10

しかし運がない

4

4 に答える 4

1

サブクエリがなければ、並べ替えて最大のものを取得できます

SELECT  Option FROM tblCust
WHERE c_id = 10
ORDER BY Number DESC LIMIT 1
于 2013-10-05T11:29:35.157 に答える
0

これを使って:

SELECT Option, Numbers
FROM tblCust
WHERE c_id = 10
ORDER BY Numbers DESC
LIMIT 1

出力:

Option  Numbers
1       2
于 2013-10-05T11:34:55.760 に答える
0

max() over() の使用は、オプションではなく、数値に反対することを意図していたと思います

select *
from (
   select c_id, 
          option,
          max(numbers) over (partition by c_id) as max_numbers
   from tblCust
   where c_id = 10
) t
where numbers = max_numbers;

ただし、データが max(Numbers) に等しい複数のレコードを持ち、1 つの結果レコードのみが必要な場合は、row_number() を使用する方が適切なオプションになる場合があります。

select *
from (
       select c_id, 
              option,
              row_number() over (partition by c_id order by Numbers DESC, Option DESC) as rn
       from tblCust
       where c_id = 10
    ) AS t
where rn=1
;

ここで over() 内の順序に注意してください。最初に最大の Numbers と Option が配置され、次に row_number 値 1 が与えられます。

于 2013-10-05T14:48:37.183 に答える