搜索查询结果mySQL
问题描述:
我对搜索功能有以下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
答
基于您的评论,你需要包括在order by
name
:
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
尝试缩进您的查询,以便所以我们可以读取它 – Ibu 2013-02-08 18:10:03
单独提供一个MySQL查询更具可读性。 – Slowcoder 2013-02-08 18:11:36
WHICH列的优先级?你的代码让我的眼睛流血。 – 2013-02-08 18:14:09