54898

[code]

    SELECT * FROM _table 
    WHERE _tag LIKE '%新幹線%' OR _schedule LIKE '%新幹線%' OR _memo LIKE '%新幹線%'
    ORDER BY ???_tag,_schedule,_memoの順で並び替えたい???
    
[/code]

sqlを発行した際にWHERE句のマッチが早い順番で並び替えたいです。そのようなことがSQLで可能でしょうか？ また重複は許可したくありません。

上記の場合ですと、新幹線という文字が、_tag,_schdule,_memoのいづれかに入っている場合に、_tagにマッチしたものを優先的に、その次は_schduleに、最後に_memo内に新幹線という文字が含まれるレコードがほしいです。

よろしくお願い致します。


CC BY-SA 4.0
2019-05-11T11:22:36.177
54894
2019-05-11T14:43:48.893
2019-05-11T14:43:48.893
76
3693
question
mysql sql
WHERE句のORの順番で並び替えたい！


こんな感じでできるんじゃないかと思います。

[code]

    SELECT * FROM _table 
    WHERE _tag LIKE '%新幹線%' OR _schedule LIKE '%新幹線%' OR _memo LIKE '%新幹線%'
    ORDER BY
     _tag LIKE '%新幹線%' DESC,
     _schedule LIKE '%新幹線%' DESC,
     _memo LIKE '%新幹線%' DESC;
    
[/code]

`LIKE` は適合すると `1`, 適合しないと `0` を返します。`1`→`0` の順に並べるために `DESC` を使用しています。


CC BY-SA 4.0
2019-05-11T13:09:02.810
54898
2019-05-11T13:09:02.810
3249
54894
answer