select * from abc where xyz like $x or xyz like $y or xyz like $ z
では、これqueryは最大数の結果がlike一番上にリストされるのは自動的ですか?
そうでない場合、それを行うために何を追加する必要がありますか?
select * from abc where xyz like $x or xyz like $y or xyz like $ z
では、これqueryは最大数の結果がlike一番上にリストされるのは自動的ですか?
そうでない場合、それを行うために何を追加する必要がありますか?
ブール値の TRUE および FALSE 式は、整数の 1 および 0 として扱うことができます。したがって、単純に値を合計し、その値で並べ替えることができます。
SELECT * FROM abc
WHERE xyz LIKE $x OR xyz LIKE $y OR xyz LIKE $z
ORDER BY ((xyz LIKE $x) + (xyz LIKE $y) + (xyz LIKE $z)) DESC
それは複雑な使用シナリオです...
リソースをフィルタリングし、それらをワンステップでランク付けしたい....次の汚いハックアラウンドを試してください;)
select * from abc where xyz like $x or xyz like $y or xyz like $ z ORDER BY ( xyz like $x + xyz like $y + xyz like $z) DESC
とはどういう意味maximum matched result at the topですか? ちなみに、クエリをさらに次のように書き換えることができます。
select *
from abc
where xyz IN ($x, $y, $z)
さらに、LIKEパターンマッチングに使用されます。whileINは、セット内の値を見つけるために使用されます。
またはLIKEなどのワイルドカード演算子を使用して文字列比較を行う必要がない限り、使用しません。正確な$x、$y、または $z と比較しようとしている場合は、次のように演算子を使用します。%_xyzIN
SELECT * FROM abc WHERE xyz IN ($x, $y, $z)