0

こんにちは、検索ページを改善したいです

このクエリを使用して、投稿のタイトルまたは投稿の内容で投稿を検索しています

SELECT * FROM posts 
WHERE post_title rlike $this->secure($_GET['p_title']) 
  OR post_content rlike $this->secure($_GET['p_title']);

投稿を並べ替えたい

post_title最初に取得した投稿を印刷したい

そして、私が手に入れた投稿を印刷しますpost_content

それらを並べ替えるには 2 つのクエリを使用する必要がありますか? そしてそうならば。2 つの mysql クエリをマージするには?

4

4 に答える 4

2

UNION次のように、演算子 ( Docu link )を使用して 2 つのクエリの結果をマージできます。

( SELECT 0 AS toBeOrdered, * FROM posts 
  WHERE post_title rlike $this->secure($_GET['p_title'])  )
UNION
( SELECT 1 AS toBeOrdered, * FROM posts 
  WHERE post_content rlike $this->secure($_GET['p_title']) )
ORDER BY toBeOrdered ASC

toBeOrderedご希望の並べ替えを反映する列を挿入しました。

于 2012-06-11T14:28:25.310 に答える
0

次の構文を使用して、複数の列を並べ替えることができます。

SELECT * FROM posts 
WHERE post_title rlike $this->secure($_GET['p_title']) 
OR post_content rlike $this->secure($_GET['p_title'])
ORDER BY post_title ASC, post_content DESC

もちろん、それに応じて ASC と DESC を調整します

于 2012-06-11T14:28:21.650 に答える
0

ORDER BYステートメントを使用してみてください

于 2012-06-11T14:27:41.703 に答える
0

usort特定の比較関数で配列をソートできる (user sort) を使用して、PHP を使用して配列をソートできます。そのためには、最初に 2 つの投稿をタイトルで比較できる関数と、内容を比較できる別の関数を作成する必要があります。

または、SQL を使用してクエリで並べ替えることORDER BYもできます。コーディングが簡単で、Web ページの読み込みも高速です。PHP/MySQL を使用する際の第 1 のルールは、MySQL で実行できることは MySQL で実行する必要があるということです。

最後の質問に答えるには、クエリをマージしないでください。クエリが混同され、PHP でそれらを分離する必要があります。2 つのクエリはそれほど悪くありません。

于 2012-06-11T14:33:29.960 に答える