ホームページ  >  記事  >  バックエンド開発  >  mysqlのソートの問題

mysqlのソートの問題

WBOY
WBOYオリジナル
2016-06-23 13:46:57987ブラウズ

mysql はデータ リストをクエリします。たとえば、このデータ リストは 1 ページに 5 つのレコードがあります。たとえば、クエリ配列は $user_list であり、この user_list をループします。次に、cc フィールドで並べ替えたいのですが、ユーザー テーブルで発生した問題は、最初のページは通常は小さいページから大きいページへと並べ替えられることです。全体に基づいてデータ全体を並べ替えるのではなく、大きくします。
cc は頻繁に変更されます。 フィールドはデータベースに保存できないため、計算する必要があります。 何か良い解決策があれば教えてください。




ディスカッションに返信します。 )

Calculate CC (aa が複雑すぎない場合) をクエリするときに計算式 aa をステートメントに埋め込むことができ、CC によって直接並べ替えることができます


計算式 aa をステートメントにネストして CC を計算することができます (aa の場合)あまり複雑ではありません)そして直接CCを押してソートするだけです
しかし、例えば私が書いたSQLの距離値は計算できません

$page = $_REQUEST['page'];select * from user limit ($page-1)*5,5;

foreach($user_list as $k=>$v){    // 然后根据某函数比如说 aa 计算出一个新的字段cc    $user_list[$k]['cc'] = aa($v['id']);}

$sql = "select id,avg_point,name,xpoint,ypoint,index_img,dp_count,deal_cate_id,ratio,note ,".intval(GetDistance($ypoint,$xpoint,'ypoint','xpoint')*1000)." as distance  from ".DB_PREFIX."supplier_location where ".$where;

aa関数は、特定の目的を達成するために自分で書いた関数ですmysql では利用できない関数

では、このような msyql カスタム関数 aa(変数 1, 変数 2, テーブル フィールド 1, テーブル フィールド 2) のように実装するにはどうすればよいでしょうか

では、このような msyql カスタム関数 aa(変数 1、変数 2、テーブル フィールド 1、テーブル フィールド 2)

//把你的aa函数写成mysql的函数,然后用sqlselect *,aa(id)cc from table order by cc desc;

http://www.baidu.com/s?wd=mysql%20%E8%87%AA%E5%AE%9A% E4%B9%89%E5%87%BD% E6%95%B0&rsv_spt=1&issp=1&f=8&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=3&rsv_sug4=97&rsv_sug1=3&rsv_sug2=0&inputT=2568

一時テーブル一時テーブルの作成を使用する

一時テーブルを作成し、CC を計算します。それをフィールドとして temp に保存し、一時テーブルを並べ替えてページングします。

createtemporary table temp

を使用して一時テーブルを作成し、CC を計算して temp のフィールドとして保存し、一時テーブルを並べ替えてページングします。
熱心なご回答ありがとうございます、cc これは実際にはユーザーの位置に基づいた一連のビジネス間の距離です。一時テーブルを使用すると、複数のユーザーのデータが多すぎます。
データの一部を読み取るだけです。データは計算されていますが、当然のことながら、並べ替えの効果は期待どおりではありません

距離によって並べ替える必要がある場合は、次のようにすることができます:

テーブルに、緯度と経度を格納する X フィールドと Y フィールドがあると仮定します。それぞれ販売者

$x、$y はユーザーの経度と緯度を示します
次に、select * from user ORDER BY abs($x-X), abs($y-Y) limit ($page-1)*5,5; があります。

並べ替えてから分割する必要があります。いいえ、それはできません。

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