-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

您所说的是“从查询中的所有表中获取所有字段”(“ *”位)并将全文搜索查询(MATCH 语句)的值作为“分数”变量返回。

顺便说一句,除非您真的需要所有字段,否则使用SELECT *可能非常低效。如果可能,请通过...列出必填字段

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

通过这样做,您将不会不必要地传输不需要的数据。

于 2012-12-15T16:06:13.363 回答
1

Select *用于选择表中的所有列。但是,在您的情况下,查询正在选择除relevancy figureie 之外的所有列 using MATCH(title, content) AGAINST (?) AS score

有关通过 MATCH AGAINST 查询获取相关性/分数的更多详细信息,您可以咨询FULLTEXT Search

于 2012-12-15T16:06:31.370 回答
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 回答