0

私のウェブサイトは一種の辞書です。キーワードが検索されたときに、「単語」と「意味」の両方の列を調べて、単語または意味のいずれかに一致するものをすべて表示したいと考えています。

select count(id) words where word like @keyword or meaning like @keyword 
select * from words where word like @keyword or meaning like @keyword order by word

しかし、最初に一致する単語を表示し、次に一致する意味を表示したいと思います。順序が正しくありません

それらを分離すると:

select count(id) words where word like @keyword
select * from words where word like @keyword order by word
select count(id) words where meaning like @keyword 
select * from words where meaning like @keyword  order by word

このように重複があります(キーワードが単語と意味の両方に一致する場合)

それらを再度結合すると、順序が正しくなくなります

これはどのように行うことができますか?個別の一致結果の数 + 個別の一致結果自体が必要ですが、最初に一致する単語を表示し、次に一致する意味を表示します。

4

1 に答える 1

1

ORDER BY 句で case ステートメントを使用して、単語に一致するかどうかを区別します。

select  * 
from    words 
where   word like @keyword or meaning like @keyword 
order by 
        case when word like @keyword then 0 else 1 end
        , word
于 2013-04-25T20:18:13.370 に答える