ホームページ  >  記事  >  バックエンド開発  >  php mysql select はフィールドの展開と値に応じた並べ替えをサポートしていますか?

php mysql select はフィールドの展開と値に応じた並べ替えをサポートしていますか?

WBOY
WBOYオリジナル
2016-08-04 09:20:211088ブラウズ

1. たとえば、テーブル内のフィールドの形式は次のとおりです: data 1|||||data 2|||||data 3
2。次に、データを $data[0] に分割します。 ,$data[1],$ data[3]、$data[3]で並べ替える
3 これは実現できるでしょうか?
4. まったくの初心者のため、説明が統一されていない可能性がありますが、意味は明確である必要があります。

返信内容:

1. たとえば、テーブル内のフィールドの形式は次のとおりです: data 1|||||data 2|||||data 3
2。次に、データを $data[0] に分割します。 ,$data[1],$ data[3]、$data[3]で並べ替える
3 これは実現できるでしょうか?
4. まったくの初心者のため、説明が統一されていない可能性がありますが、意味は明確である必要があります。

実装することは可能ですが、MySQL レベルで実装すると、データベースへの負荷が大きくなる可能性があります。
PHP プログラムでソートし、ID シーケンスに基づいて MySQL からデータを取得することを検討できます。 リーリー

データ量が大きい場合は、PHP によって配置された ID シーケンスをキャッシュすることを検討できます。

ORDER BY FIELD(id,$ids) この操作は、データ量が大きい場合にもパフォーマンスの問題を引き起こします。実際の状況に基づいてキャッシュすることを検討できます。セグメント $ids、たとえば、最初のページでは 0 から 19 までの 20 個の項目を並べ替え、2 番目のページでは同様に、少量のデータをカスタム並べ替えることができます。 MySQL への負担が大幅に軽減されます。

これはphpとは関係ありません。 mysql で関数を作成し、その関数を使用して並べ替えることができます:

リーリー リーリー

実装は可能ですが、非常に面倒で非効率です。この要件に対する通常の解決策は、テーブル構造を変更することです。

純粋に論理的な観点から見ると、SQL は実際には非常に複雑な処理を行うことができますが、クエリの実行に数分かかり、それが家族に知られたら、あなたは殴られると思いますか?

クエリ後のソートにはmysqlではなくphpを使用することをお勧めします

mysqlのsubstring_index

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。