2016-04-30 11 views
-1

与えられたテーブルで、列Aの最大値を持つ行を選択したいが、同時に2つ以上の行がある最大値aカラムBの値がnullでない行を取得したい場合は、カラムBの値がnullの場合でも最大値を持つ最初のローを取得します。mysql、特定の値を持つセルに優先度を与える方法

  1. 最初の選択肢:柱の最大列-B nullでない

    in case such a row does not exist 
    
  2. 2番目の選択肢:カラム-格言、カラム-Bヌル

  3. 要約

この制約を使用して1つのクエリを記述することは可能ですか、またはいくつかのロジックを使用して2つのクエリを作成する必要がありますかeen?クエリ以下

+0

編集ご質問 –

答えて

0

それが降順にcolumnBそして、降順最初columnAで注文するよ

SELECT columnA,columnB 
FROM YourTable 
ORDER BY columnA DESC, columnB DESC 

以下のようにあなたがORDER BYで複数の列を使用することができますトリック

SELECT * FROM tableA where columnA=(select max(columnA) from tableA) order by columnB desc 
1

を行いますnullが最後の選択肢になります。

1行だけが返された場合は、クエリの最後にLIMIT 1を追加します。

0

col_aの最大値を戻すためにインライン・ビューを使用し、同じcol_a値を持つすべての行を取得するために結合を行い、次にcol_bの最大値をこれらの行から取得できます。例えば

:サンプルデータと所望の出力と

SELECT s.col_a 
     , MAX(t.col_b) AS col_b 
    FROM (SELECT MAX(r.col_a) AS col_a 
      FROM mytable r 
     ) s 
    JOIN mytable t 
    ON t.col_a = s.col_a 
関連する問題