【问题标题】:What does SELECT *, MATCH mean?SELECT *, MATCH 是什么意思?
【发布时间】:2012-12-03 08:14:27
【问题描述】:

我知道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 * 之后删除, 将不起作用

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

【问题讨论】:

  • MATCH 是为框架中的数据库操作导入的类中的函数
  • SELECT 列列表中的逗号只是一个分隔符。因此,这将获取所有列(正如您对* 所期望的那样),然后还获取子句MATCH(title, content) AGAINST (?) AS score 的结果。所以你的问题真的是“MATCH AGAINST 做什么”?

标签: php mysql


【解决方案1】:

这里是一个例子

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

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

【讨论】:

    【解决方案2】:

    这基本上意味着首先打印出所需结果集的所有列,然后找到匹配项(根据给定规则)。

    看看下面的例子,你是否清楚:

    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)
    

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

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

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-04
              • 1970-01-01
              • 1970-01-01
              • 2020-08-15
              相关资源
              最近更新 更多