0

我有表结构:

  • lnks(l_id,txt,url,name) - l_id 是唯一的链接 ID
  • kws(wrd, kw_id) - 作为字典,wrd 是单词,id 是唯一的
  • kwds0..kwds21 - 单词,关系 kws.kw_id->lnks.l_id (keyword(many))->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 服务器版本相对应的手册,以在第 2 行的“ON lnks.l_id=kwds12.l_id AND lnks.l_id=kwds13.l_id INNER JOIN kws ON kws.kw_id=”附近使用正确的语法

谢谢

4

2 回答 2

0

您的语法错误在第一个INNER JOIN

INNER JOIN kwds12, kwds13 ...

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

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

于 2013-03-23T01:30:41.313 回答
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'
于 2013-03-23T01:31:30.000 回答