0

私はこのmysqlクエリを持っています。

クエリの最初の部分からの結果を最初に取得し、次にクエリの2番目の部分からの結果を取得するために、結果を並べ替える方法についてのアイデア。

これが私がそれを行う方法ですが、それは正しく機能しておらず、結果を混ぜ合わせています。

SELECT name, pic0, bio,site
FROM ".$table."
WHERE ( (name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%') )
   OR ( name IS NOT NULL AND category IN ('drivers', 'construction') AND site LIKE ('%site1%') )
ORDER BY ( (name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%') ) DESC
LIMIT ".$offset.", ".$rowsperpage."");

ありがとうございました

4

2 に答える 2

0

クエリを2つのクエリに分割し、UNIONそれらを

MySQLのユニオン:http://dev.mysql.com/doc/refman/5.0/en/union.html

私はテストしていませんが、クエリは次のようになります。

(SELECT name, pic0, bio,site
FROM ".$table."
WHERE ( (name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%') )
ORDER BY ( (name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%') ) DESC)
UNION
(SELECT name, pic0, bio,site
FROM ".$table."
WHERE ( name IS NOT NULL AND category IN ('drivers', 'construction') AND site LIKE ('%site1%') )
ORDER BY ( (name LIKE '%john%' OR name LIKE '%smith%') AND site LIKE ('%site1%') ) DESC)  
于 2012-06-20T15:34:03.630 に答える
0

クエリの最初の部分で最初の-conditionを意味する場合は、既存の-clauseの後WHEREにを追加するだけで十分です。DESCORDER BY

最初の条件と同じロジックを使用するため1、最初の条件が真である行と0残りの行に使用されます。

降順で並べ替えると、最初の条件の結果が最初に表示されます。

于 2012-06-20T15:36:34.200 に答える