ホームページ  >  に質問  >  本文

null 以外の値の組み合わせを使用して MySQL 行をグループ化する方法

グループ化された結果の各列の latest 非 null 値を選択して行をマージ/結合するにはどうすればよいですか?

###ユーザー### ###フルーツ### ###番号### ###単純### ###りんご### ###ヌル### 2022-01-01 ###スイカ### 3 ###ヌル### ジョン ###梨### ###ヌル### 次の方法は機能しません: 結果が次のようになることを願っています: 問題は、COALESCE() 関数が値セットでは機能せず、リストでのみ機能することです。 多くのトピックでは、解決策として COALESCE() の代わりに MIN() または MAX() を使用することが言及されています。しかし、古い値を上書きするには最低値や最高値ではなく新しい値が必要なので、これでは問題は解決しません。
id作成時間 1
2 ジョン32 2022-01-02
ジョン72 2022-01-03 4
2022-01-04 リーリー リーリー
P粉002023326P粉002023326430日前576

全員に返信(1)返信します

  • P粉979586159

    P粉9795861592023-09-07 20:00:18

    COALESCE() は集計関数ではなく、指定された値のリストでのみ機能するため、この投稿で @jsowa の回避策を見つけました: 「COALESCE」が機能しない理由「GROUP BY」と併用?

    COALESCE() の代わりに SUBSTRING_INDEX(GROUP_CONCAT()) を使用できます。

    GROUP_CONCAT() の ORDER BY 句に特に注意してください。 欠点は、どの値でも区切り文字が 未使用の 文字でなければならないことです。

    リーリー

    結果を返す

    リーリー

    返事
    0
  • キャンセル返事