我知道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 *
,则无效
请帮帮我,我尝试了谷歌搜索但找不到任何东西。
答案 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)