0

以前にSQLの質問でスタックオーバーフローを使用しましたが、成功しました。

今回は、次号でそれほど成功しない可能性があります。

Statements_1約 50 列、10,000 行と呼ぶテーブルがあります。

各列には、「私の犬が走る」のようなステートメントが含まれているか、列が null です。

列には、1、2、3 など、50 までのラベルが付けられます。

同様に、行はすべて、1 から 10,000 までの単純な pk で始まります。

テーブルの各行のデータの長さが一貫していません。

たとえば、行 #1 には連続する 5 列にステートメントがあり、行 #2 には連続する 37 列にステートメントがあり、行 #3 には連続する 19 列にステートメントがあります。

私がする必要があるのは、ステートメントを使用して HTML 形式の箇条書きタイプの段落を作成する簡単なコードを、テーブル Statements_2 列 Bullet に記述することです。元:

私の犬は走っています
14個のりんごはおいしいです
はい、これは楽しい
です 私は私の資源を無駄にしています

列の行全体を連結する方法は理解していますが、CPU とスクリプトの実行時間が無駄になり、Web ページに大量の空白が残ってしまいます。行列の合計に含まれるデータの量。

時間を浪費するだけでなく、メモリが急速に蓄積されるため、メモリ使用量が過負荷になった後にサーバーがロックアップしてゲートウェイ タイムアウトが発生しないように、スクリプトを一度に 80 に制限する必要があります。

どこから始めればよいかアドバイスはありますか?

4

1 に答える 1

0

これを探していますか?

SELECT id, 
       CONCAT_WS(' ', 
                 COALESCE(col1, ''),
                 COALESCE(col2, ''),
                 COALESCE(col3, ''),
                 COALESCE(col4, ''),
                 COALESCE(col5, '')) bullet
  FROM Statements_1

出力:

| | ID | 弾丸 |
----------------------------------
| | 1 | 私の犬が走る |
| | 2 | 14 りんごはおいしい |
| | 3 | はい、これは楽しいです |
| | 4 | リソースを無駄にしています |

これがSQLFiddleのデモです

COALESCEリストから最初の非 NULL 値を返します。この例では、列の値が NULL の場合は空の文字列を返し、それ以外の場合は値自体を返します。
これCONCAT_WS()は、一連の値を区切り記号で連結する便利な方法です。

于 2013-07-29T04:03:56.227 に答える