搜索文本获取"以"开头结果首先

时间:2016-09-05 12:26:13

标签: sql postgresql

我的SQL请求返回以reserch文本开头的文本字段:

SELECT field1, field2 FROM mytable
WHERE field1 ILIKE 'ex%' OR UNACCENT(field2) ILIKE 'ex%'

另一个请求也是如此,但不一定以研究文本开头:

SELECT field1, field2 FROM mytable
WHERE field1 ILIKE '%ex%' OR UNACCENT(field2) ILIKE '%ex%'

我正在寻找一种方法来首先返回第一个请求的结果,然后是第二个请求的结果,如果可能的话,没有重复的结果,因为第二个请求也返回第一个请求的结果...

或者也许我们可以订购"从"开始首先,其余的(不是从开始)?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

简单地在您like '%ex%'处有一个查询,以返回所有行。然后添加ORDER BY,首先返回like 'ex%'行。

SELECT field1, field2 FROM mytable
WHERE field1 ILIKE '%ex%' OR UNACCENT(field2) ILIKE '%ex%'
ORDER BY field1 ILIKE 'ex%' OR UNACCENT(field2) ILIKE 'ex%' DESC