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 と比較しようとしている場合は、次のように演算子を使用します。%
_
xyz
IN
SELECT * FROM abc WHERE xyz IN ($x, $y, $z)