sql >> データベース >  >> RDS >> Mysql

SQL:ウィンドウ関数の現在の行のデータを参照/アクセスできますか?

    MySQLを使用していて、テーブルの名前がtestであると想定します。 、および両方の列が文字列タイプであると想定します:

    SELECT
      t1.id, count(t2.list)
    FROM
    (test t1 LEFT JOIN test t2 ON
      (t2.list LIKE CONCAT('%,', t1.id, ',%')) OR
      (t2.list LIKE CONCAT('%,', t1.id)) OR
      (t2.list LIKE CONCAT(t1.id, ',%')))
    GROUP BY t1.id;
    

    レコードの数やlist内の文字列の平均の長さによっては、このソリューションが非常に遅くなる可能性があることに注意してください。 フィールド。

    もっと速いものが必要な場合、それは単一のクエリではあり得ないと思います。おそらく、そのためのストアドプロシージャまたはアプリケーションロジックを作成するか、追加のテーブルまたは列と一連の複数のSQLステートメントを使用する必要があります。



    1. すべてのテーブルから行を選択する簡単な方法

    2. MySQLクロステーブルカウント(*)クエリヘルプ

    3. PostgreSQL13でのUnicode正規化

    4. MYSQL-テーブルの更新後の内部結合