Postgres OR検索を一致順で表示

OR検索一致順でソート

全件表示。

pgdb=# SELECT * FROM foo; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | リンゴ | 1 | t 100002 | バナナ | 1 | f 100003 | ネコ | 2 | t 100004 | イヌ | 2 | f (4 行)

foo_nameがバナナまたはfoo_categoryが1 いずれかの条件にマッチする結果を表示。

pgdb=# SELECT * FROM foo WHERE foo_name = 'バナナ' OR foo_category = 1; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100001 | リンゴ | 1 | t 100002 | バナナ | 1 | f (2 行)

SQL

SELECT * FROM foo WHERE foo_name = 'バナナ' OR foo_category = 1 --条件 ORDER BY foo_name = 'バナナ' DESC, foo_category = 1 DESC; --ソート

foo_nameがバナナまたはfoo_categoryが1 いずれかの条件にマッチする結果を一致順で表示。

pgdb=# SELECT * FROM foo WHERE foo_name = 'バナナ' OR foo_category = 1 ORDER BY foo_name = 'バナナ' DESC, foo_category = 1 DESC; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100002 | バナナ | 1 | f 100001 | リンゴ | 1 | t (2 行)

foo_nameがイヌまたはfoo_categoryが1 いずれかの条件にマッチする結果を一致順で表示。

pgdb=# SELECT * FROM foo WHERE foo_name = 'イヌ' OR foo_category = 1 ORDER BY foo_name = 'イヌ' DESC, foo_category = 1 DESC; foo_id | foo_name | foo_category | foo_flg --------+----------+--------------+--------- 100004 | イヌ | 2 | f 100001 | リンゴ | 1 | t 100002 | バナナ | 1 | f (3 行)

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について