gpt4 book ai didi

MYSQL Query比较两个查询的结果?

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

我目前正在为一个网站开发一个搜索功能,该功能可以在数据库中搜索特定动物。

假设用户输入 rabbit,搜索将通过 db 并显示 rabbit 的结果。

现在假设用户输入 bunny 搜索将通过 db 但不会找到 bunny 的匹配项。

大多数人都知道bunny 的意思是rabbit,但数据库并不知道。此时我已经在同一个数据库中实现了一个 MySQL 同义词库来搜索用户输入的同义词。

这意味着如果用户输入 bunny,它将显示 bunny 的同义词列表。

在该列表中有单词 Rabbit,我试图从那里提取该单词以生成匹配项。此时我有以下内容。

"SELECT  `engname` FROM  `searchtestdb` WHERE  `engname` IS NOT NULL  ";

-- 这会显示该表中每只动物的英文名称。 --

"SELECT synonyms.* FROM words LEFT JOIN synonyms ON synonyms.word_id = words.word_id WHERE word = \"$searchBox\""

-- 这会显示用户输入的单词 $searchBox 的同义词。 --

这两个查询都显示了我希望它们显示的内容。换句话说,第一个查询为我提供了表中所有动物的名称,第二个查询为我提供了用户输入的单词的同义词。

此时我的问题是如何比较所有动物名称的同义词。我已经尝试使用 LIKE 命令进行多次查询,但我不断收到语法错误。

我问的可能吗?如果不是,什么是更好的行动方案?任何帮助将不胜感激。

谢谢。

我为大家准备了一把半 fiddle 。

http://sqlfiddle.com/#!2/47d42/3

它只适用于“bunny”,因为整个同义词和单词列表对于 fiddle 来说太大了。

最佳答案

select * from searchtestdb
where engname in
(
SELECT synonyms.synonym
FROM words
LEFT JOIN synonyms ON synonyms.word_id = words.word_id
WHERE word = "bunny"
)

SQLFIddle

编辑:由于您可能还想搜索直接输入的单词而不仅仅是它的同义词,因此您还应该添加该条件:

OR engname = "bunny"

SQLFIddle

关于MYSQL Query比较两个查询的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16098588/

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