0

好的,所以我有这四个表:linkssubmissionslinks_keywordssubmissions_keywords

它们的结构有点像这样:

链接:
链接 ID 链接 URL

提交:
提交_id 提交_url 提交_last_used

链接关键字:
id link_id 关键字

提交关键字:
id submit_id 关键字

我想做的是从提交中提取结果,其中链接的关键字与提交的关键字最匹配,如果有多个结果,则按最后使用的结果对其进行过滤。我不确定如何构造这个查询。另外我不想用一个关键字匹配它,我想看看有多少关键字匹配,然后我可以确定最好的结果。

4

1 回答 1

0

我刚刚在 Oracle 中处理了一个类似的查询。在 MySQL 中这 100% 容易,因为 Oracle 没有 LIMIT 子句。这可能不是最有效的,但会为您提供所需的答案。要获取链接值,只需添加另一个联接。您可以通过删除其中一个关键字子句来搜索单个术语。

select  
    t1.submission_id, t1.submission_url, t1.submission_last_used , t3.keyword
from 
    submissions t1
join submission_keywords t2 on 
    t2.submission_id = t1.submission_id
join link_keywords t3 on 
    t3.keyword = t2.keyword 
where 
    (t3.keyword = 'search' OR
    t3.keyword = 'email')
    AND t1.submission_id = (
        SELECT submission_id from submissions where submission_id IN (
            SELECT submission_id from submission_keywords WHERE keyword = t2.keyword) 
        order by submission_last_used DESC LIMIT 1);
于 2012-05-17T14:30:07.197 回答