2011-05-26 94 views
0

我的腳本有:SQL腳本訂購

select * from users where... 

where子句將有兩個部分,他們需要訂購這種方式:

1. where description = "query" 

    2. where description = "%query%" 

有一些方法來做到哪裏描述= 「查詢」爲1或描述=「%query%」爲2並對其進行排序?

+0

可能重複(http://stackoverflow.com/questions/6134509/sql-ordering-in-mysql) – 2011-05-26 07:01:23

回答

2

用途:

SELECT a.*, 
     1 AS sort 
    FROM USERS a 
WHERE a.description LIKE 'query' 
UNION ALL 
SELECT b.*, 
     2 AS sort 
    FROM USERS b 
WHERE b.description LIKE '%query%' 
ORDER BY sort 
[MySQL中的SQL訂購]的
+0

+1 OMG,很順我的思路,所以你一定是對的。 ;)一個有用的調整將是改變第二個WHERE包含一個'AND b.description <>'查詢''以防止同一用戶在結果中出現兩次。 – 2011-05-26 06:56:20

+0

@答:我認爲從長遠來看,全文搜索(FTS)將是一個更好的主意。 – 2011-05-26 06:57:55