ホームページ >バックエンド開発 >PHPチュートリアル >キーワードでソートされた mysql の検索結果

キーワードでソートされた mysql の検索結果

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

次に、豚、犬、牛という 3 つの単語を含むデータを検索する必要があります。
たとえば、結果データに豚が含まれている場合、結果データが最初にランク付けされるようにするにはどうすればよいでしょうか。 2位は牛、3位は牛でした。

例:
Pig
Cow
Dog
Dog
Pig
Cow

結果の並べ替えを次のようにしたいとします。
Pig
Pig
Dog
Dog
Cow
Cow


ディスカッションに返信(解決策)

フィールド 1、フィールド 2、フィールド 3 で順序を追加します
{
テーブル名から豚、犬、牛の順序で * を選択します


} 問題ないはずです

豚、犬、牛は同じフィールドにあります、上の階のものではありません。

は次のように記述できます。たとえば、フィールド名は shengxiao

$sqlstr = "select *,IF(shengxiao='猪啊',1, IF(shengxiao='狗啊',2,3)) as s from table order by s";

plus order by field 1, field 2, field 3
{
select * from table name order by pig, Dog, Cow


} は OK のはずです


これは機能しません、豚、犬、牛は畑ではありません、豚、犬、牛はデータです
クエリは次のようになります

$str="select id  from biaoqian  where (biaoti like '%猪%' or b.biaoti like '%狗%' or b.biaoti like '%牛%' or b.biaoti like '%猪狗牛%' )  order by  id desc limit 10";


現在の検索結果は逆順に並べ替えられていますID の順序で検索結果を並べ替えたいのですが、データの配置は、最初に「豚、犬、牛」が含まれ、2 番目に豚が含まれ、3 番目に犬が含まれます。最後に牛が含まれています
create temporary table T  select '猪啊' as f  union select '牛啊'  union select '狗啊';select *, if(locate('猪', f), '猪',if(locate('牛',f),'牛', if(locate('狗',f),'狗',''))) as x  from T order by find_in_set(x, '猪,狗,牛')
f    x 猪啊 猪 狗啊 狗 牛啊 牛 

xx like '% Pig%'、xx like '%dog%'、xx like '%cow%' desc で注文します

完了、ありがとうございます

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