使用MATCH和AGAINST 从MySQL获取数据,并将结果限制为具有相似名称的列中的一个条目


Fetching data from MySQL using MATCH and AGAINST & limiting the result to have one entry from a column of similar name

我有一个表格,其中有列"名称"和另一个列"描述"。

--- Name ---|--- Description ---
------- John | abc123
------- John | def456
------- John | ghi789
------- Terry | abc123
------- Terry | def456
------- Terry | ghi789

当我使用匹配时,我得到 3 个输出。我需要的是只返回 1 个值。

我还有一个"约翰"页面,其中给出了所有 3 个"描述",所以我不能使用

     SELECT John WHERE description = 'abc123';

使用它进行搜索,因此对于"约翰·特里"的$searchquery,我试图获得的输出是$row["名称"]应该是("约翰","特里")

我只需要它是一个输出,即"John"和"Terry",而不是 3 次 *"John"*

3 *"Terry"*,我会通过 mysql_fetch_array 获取并在 while 循环中使用数组。

如果可以,请建议。

提前感谢您的时间和回复。

祝您编码愉快!

使用 GROUP BY .

因此,您的查询将是:

SELECT name FROM tableName WHERE MATCH(name) AGAINST("' . $searchQuery . '") GROUP BY name;

它会解决问题。

与查询的匹配结束时使用 limit 1 以限制为一个结果