簡體   English   中英

如何進行SQL查詢,以選擇與某個字符串匹配的所有行,然后根據匹配數對它們進行加權

[英]How can I make a SQL query that selects all rows matching a certain string then weights them based on the number of matches

如何創建一個使用LIKE運算符匹配多個字符串的SQL查詢,然后按它獲得的匹配數對ORDERS結果進行ORDERS

另外,有沒有一種方法可以存儲匹配數,以便以后可以在PHP中使用該數字進行其他計算?

我目前正在使用另一個堆棧溢出答案中的此代碼

SELECT searchtopics_topicid, searchtopics_content FROM searchtopics 
    WHERE searchtopics_content
         LIKE '%string1%' OR searchtopics_content 
         LIKE '%string2%' OR searchtopics_content
         LIKE '%string3%' 
    ORDER BY 
         case when searchtopics_content LIKE '%string1%' then 1 else 0 end + 
         case when searchtopics_content LIKE '%string2%' then 1 else 0 end + 
         case when searchtopics_content LIKE '%string3%' then 1 else 0 end 
    DESC

上面的代碼看起來應該可以正常工作,用於存儲您只需將ORDER BY大小寫邏輯添加到選擇列表中的數字。

SELECT searchtopics_topicid
     , searchtopics_content 
     , case when searchtopics_content LIKE '%string1%' then 1 else 0 end + 
       case when searchtopics_content LIKE '%string2%' then 1 else 0 end + 
       case when searchtopics_content LIKE '%string3%' then 1 else 0 end AS hit_ct 
FROM searchtopics 
WHERE searchtopics_content LIKE '%string1%' 
   OR searchtopics_content LIKE '%string2%' 
   OR searchtopics_content LIKE '%string3%' 
ORDER BY 
     case when searchtopics_content LIKE '%string1%' then 1 else 0 end + 
     case when searchtopics_content LIKE '%string2%' then 1 else 0 end + 
     case when searchtopics_content LIKE '%string3%' then 1 else 0 end 
DESC

在MySQL中,您可以稍微簡化一下:

    SELECT searchtopics_topicid
         , searchtopics_content 
         , searchtopics_content LIKE '%string1%' 
           + searchtopics_content LIKE '%string2%' 
           + searchtopics_content LIKE '%string3%' AS hit_ct 
    FROM searchtopics 
    WHERE searchtopics_content LIKE '%string1%' 
        + searchtopics_content LIKE '%string2%' 
        + searchtopics_content LIKE '%string3%' > 0
    ORDER BY searchtopics_content LIKE '%string1%' 
           + searchtopics_content LIKE '%string2%' 
           + searchtopics_content LIKE '%string3%' DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM