編碼的世界 / 優質文選 / 歷史

MYSQL查詢比較兩個查詢的結果?


2022年5月15日
-   

我目前正在為一個搜索特定動物數據庫的網站開發搜索功能.
假設用戶輸入兔子,搜索將通過數據庫並顯示兔子的結果.
現在說用戶輸入bunny搜索將通過數據庫,但找不到匹配的兔子.
大多數人都知道兔子意味著兔子,但數據庫並不知道.此時,我在同一個數據庫中實現了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命令嘗試了幾個查詢,但是我一直遇到語法錯誤.
我問的可能嗎?如果不是更好的行動方案?任何幫助將不勝感激.
謝謝.
我為你們提供了一個半小提琴.
它只適用於“兔子”,因為整個同義詞和單詞列表對於小提琴來說太大了.
解決方法:
select * from searchtestdb
where engname in
(
SELECT synonyms.synonym
FROM words
LEFT JOIN synonyms ON synonyms.word_id = words.word_id
WHERE word = "bunny"
)
編輯:既然你可能也想搜索直接輸入的單詞而不僅僅是它的同義詞,你還應該添加這個條件:
OR engname = "bunny"
標簽:mysql,sql,compare,phpmyadmin
來源: https://codeday.me/bug/20190709/1410227.html

熱門文章