gpt4 book ai didi

mysql - 为什么我的 MySQL MATCH() AGAINST() 查询因 LEFT JOIN 数据库中的列而失败?

转载 作者:可可西里 更新时间:2023-11-01 07:10:18 25 4
gpt4 key购买 nike

我有一个类似于下面的 MySQL 查询:

SELECT * 
FROM products
LEFT JOIN descriptions ON products.DescriptionID = descriptions.ID
WHERE MATCH (name, overview, specs) AGAINST ('ram');

我尝试使用 MATCH() AGAINST() 搜索的所有列都是全文,但在 phpMyAdmin 中测试时出现以下错误:

#1210 - Incorrect arguments to MATCH

如果我只MATCH 一列,它不会出错并且可以正常工作,但是一旦我尝试MATCH 多列,它就会失败并出现此错误。我正在运行 MySQL 5.0.45 和 MySQL 5.0 Full-Text Search Functions文档暗示我可以做到这一点。

是因为 LEFT JOIN 吗?我是否需要将一堆 MATCH() AGAINST() 函数调用OR 在一起?

更新@Zak:我不能发布表创建语句,但我可以说在这个例子中列如下:products.name, descriptions.overviewdescriptions.specs。如果我以完整的 table.column 格式指定它们,它不会改变行为。

但是,如果我从 MATCH() 中丢失了 products.name,我会收到以下错误:

#1191 - Can't find FULLTEXT index matching the column list

但是,descriptions.overviewdescriptions.specs 都是 FULLTEXT。

最佳答案

MATCH() 的参数必须与 FULLTEXT 索引定义中的列相同。它们的数量和位置必须相同。

此外,由于您无法使用来自不同表的多个列创建索引,因此您无法在单个 MATCH() 调用中匹配来自不同表的列。

如果您想从不同的表中搜索文本列,您必须在每个表中创建一个 FULLTEXT 索引,然后使用单独的 MATCH() 调用搜索每个索引。使用 OR 表达式组合结果。

关于mysql - 为什么我的 MySQL MATCH() AGAINST() 查询因 LEFT JOIN 数据库中的列而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1711961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com