SELECT *,MATCH是什么意思?

时间:2012-12-15 15:59:59

标签: php mysql

我知道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 *,则无效

请帮帮我,我尝试了谷歌搜索但找不到任何东西。

6 个答案:

答案 0 :(得分:2)

这里是一个例子

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

从这里开始  Problem with IE and setInterval() not refreshing/updating

答案 1 :(得分:1)

答案 2 :(得分:1)

MATCH是一个mysql函数。它只是结果集中的另一列。

答案 3 :(得分:1)

您所说的是“从查询中的所有表中获取所有字段”(“*”位)并将fulltext search query (the MATCH statement)的值作为“得分”变量返回

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

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分: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)