我正在尝试编写一个查询,该查询将返回与匹配多个关键字相关的所有相关行。最初,如果我这样写查询:
select * from urls u, url_data d, url_link l where d.keywords like '%html%' and l.url_data=d.id AND l.url_id=u.id;
并且输出正确。我得到与此搜索词“ html”相关的行。当我将查询更新为此:
select * from urls u, url_data d, url_link l where d.keywords like '%html%' or d.keywords like '%css%' and l.url_data=d.id AND l.url_id=u.id;
这里到底发生了什么?我正在努力寻找适当的解决方法。我可以为每个关键字单独运行查询,但这似乎很多余。
编辑:澄清:我有3张桌子。 urls(id,链接)url_data(id,关键字,标题,描述)和url_link(url_id,url_dataid)。我从url_data获取相关的ID,然后在URL表中查找ID的匹配索引。我对INNER JOIN的文档不熟悉,我只看到2个表。
[如果缺少其他选项卡上没有对应行的某些列,则可以尝试LEFT JOIN
SELECT
u.*
, d.*
,l.*
FROM
urls u
INNER JOIN url_link l ON l.url_id=u.id
INNER JOIN url_data d ON l.url_data=d.id
WHERE d.keywords like '%html%';