mysql内连接多字搜索

时间:2013-03-23 01:24:49

标签: mysql inner-join

我有表结构:

  • lnks(l_id,txt,url,name) - l_id是唯一的链接ID
  • kws(wrd,kw_id) - 作为dictionarry,wrd是单词,id是唯一的
  • kwds0..kwds21 - 单词,关系kws.kw_id-> lnks.l_id (关键字(许多)) - > link_ids
  • 我正在搜索“word word2”的多字搜索。单词表 预密钥是用代码计算的,我把它们作为kwds12和kwds13。
  • 我尝试获取包含查询中所有单词的所有链接。 'word1'在表格中kwds12'word2'在表kwds13

SELECT
    url,
    name
FROM
    lnks  
    INNER JOIN kwds12, kwds13
        ON   
            lnks.l_id=kwds12.l_id
                AND
            lnks.l_id=kwds13.l_id
    INNER JOIN kws
        ON   
            kws.kw_id=kwds12.kw_id
                OR
            kws.kw_id=kwds13.kw_id
WHERE   
    kws.wrd='word1'
        OR
    kws.wrd='word2'

您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'ON lnks.l_id = kwds12.l_id附近使用正确的语法AND lnks.l_id = kwds13.l_id INNER JOIN kws ON kws.kw_id ='在第2行

THX

2 个答案:

答案 0 :(得分:0)

您的语法错误位于第一个INNER JOIN

INNER JOIN kwds12, kwds13 ...

那个逗号一定不能存在。如果您使用INNER JOIN,则需要单独连接表(不能用逗号分隔表)。

如果需要,您可以使用where条件替换所有联接。

答案 1 :(得分:0)

这应该更好。你需要自己加入每张桌子。

SELECT
    url,
    name
FROM
    lnks  
    INNER JOIN kwds12
        ON   
            lnks.l_id=kwds12.l_id
    INNER JOIN kwds13
        ON   
            lnks.l_id=kwds13.l_id
    INNER JOIN kws
        ON   
            kws.kw_id=kwds12.kw_id
                OR
            kws.kw_id=kwds13.kw_id
WHERE   
    kws.wrd='word1'
        OR
    kws.wrd='word2'