2013-02-08 133 views
1

我對搜索功能有以下mysql查詢。我在我的數據中有3種不同的帳戶類型,我需要按特定順序顯示。爲此,我使用了ORDER BY FIELD(profiltype,2,1,3)。這偉大工程,沒有任何問題,但是在這些結果我還需要在訂貨像一個優先級的不同列:搜索查詢結果mySQL

1. name2 
2. a_z_feld1 
etc. 

然而,這並不與查詢我有以下工作。它應該保留配置文件類型的順序,但在此順序中也有列的優先級。

SELECT * FROM main_users 
WHERE ((name2 LIKE %s) 
OR (a_z_feld1 LIKE %s) 
OR (a_z_feld2 LIKE %s) 
OR (a_z_feld3 LIKE %s) 
OR (city LIKE %s) 
OR (content_stellenvor LIKE %s) 
OR (main_content LIKE %s)) 
AND levelmember <> 1 
ORDER BY FIELD(profiltype,2,1,3) ASC, 
a_z_feld1 ASC, a_z_feld2 ASC, a_z_feld3 ASC 
+0

嘗試縮進您的查詢,以便所以我們可以讀取它 – Ibu 2013-02-08 18:10:03

+0

單獨提供一個MySQL查詢更具可讀性。 – Slowcoder 2013-02-08 18:11:36

+0

WHICH列的優先級?你的代碼讓我的眼睛流血。 – 2013-02-08 18:14:09

回答

0

基於您的評論,你需要包括在order byname

ORDER BY FIELD(profiltype,2,1,3) ASC, name2, a_z_feld1 ASC, a_z_feld2 ASC, a_z_feld3 ASC 
+0

是的......但那也行不通。我忘了拿它。一個簡單的解決方案是: ORDER BY profiltype = 2 DESC,profiltype = 1 DESC,profiltype = 3 DESC,name2 LIKE%s DESC,a_z_feld1 LIKE%s DESC,a_z_feld2 LIKE%s DESC,a_z_feld3 LIKE%s DESC,main_content LIKE%s DESC,content_stellenvor LIKE%s DESC 但這不是一個好的查詢 – 2013-02-08 20:03:57