-1

私は知ってSELECT * FROM tableいますが、私は前に見たことがありませんSELECT *, MATCH

私の作業クエリは次のとおりです

$query = $this->dbi
        ->prepare("SELECT *, MATCH(title, content) AGAINST (?) AS score FROM tmp_comments WHERE MATCH(title, content) AGAINST(?)")
        ->execute($this->key,$this->key)
        ->results();

,後で削除すると動作しませんSELECT *

私を助けてください、私はグーグル検索を試みましたが、何も見つかりませんでした。

4

6 に答える 6

2

ここに例

     SELECT * FROM users WHERE MATCH(username) AGAINST ('LU*' IN BOOLEAN MODE)

ここから IE と setInterval() が更新/更新されない問題

于 2012-12-15T16:06:55.817 に答える
1

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

さあ、グーグルはあまりかかりませんでした

于 2012-12-15T16:03:01.540 に答える
1

MATCHはmysql関数です。これは、結果セットの単なる別の列です。

于 2012-12-15T16:03:25.317 に答える
1

基本的には、最初に目的の結果セットのすべての列を出力してから、(指定されたルールで) 一致するものを出力することを意味します。

次の例でそれが明確になるかどうかを確認してください。

mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial')
    -> FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
|  1 |                        0.65545833110809 |
|  2 |                                       0 |
|  3 |                        0.66266459226608 |
|  4 |                                       0 |
|  5 |                                       0 |
|  6 |                                       0 |
+----+-----------------------------------------+
6 rows in set (0.00 sec)
于 2012-12-15T16:07:27.820 に答える
1

あなたが言っているのは、「クエリ内のすべてのテーブルからすべてのフィールドを取得する」(「*」ビット) ことであり、全文検索クエリ (MATCH ステートメント)の値を「スコア」変数として返します。

ちなみに、実際にすべてのフィールドが必要でSELECT *ない限り、使用は潜在的に非常に非効率的です。可能であれば、次の方法で必須フィールドをリストしてください...

SELECT fieldname_a, fieldname_b, MATCH(title, content) AGAINST (?) AS score ...

これにより、必要のないデータを不必要に転送することがなくなります。

于 2012-12-15T16:06:13.363 に答える
1

Select *テーブル内のすべての列を選択するために使用されます。ただし、あなたの場合、クエリはrelevancy figureie を使用して来ることに加えて、すべての列を選択していますMATCH(title, content) AGAINST (?) AS score

MATCH AGAINST クエリを使用して関連性/スコアを取得する方法の詳細については、FULLTEXT 検索を参照してください。

于 2012-12-15T16:06:31.370 に答える