MySQL 搜索引擎 - AND 关键字

标签 mysql

我正在尝试在关键术语表和页面之间进行搜索查询。

考虑下表。

页数

page_id  page_name
1        cats
2        dogs
3        humans 

关键词

key_id   key_name   key_page_id
1        purz       1
2        puzy       1
3        ruff       2
4        john       3
5        purz       3  

如果搜索词是 purz AND puzy,我希望查询结果只返回页面 ID 1。

SELECT page_id FROM PAGES, KEYWORDS 
WHERE (key_name='purz OR key_name='puzy') AND key_page_id = page_id;

返回

page_id
1
3

我要

page_id
1

因为只有 purz 和 puzy 都与猫有关。

最佳答案

我相信要做到这一点,您必须两次加入关键字表:

SELECT p.page_id
FROM pages p
JOIN keywords k ON (k.key_page_id = p.page_id)
JOIN keywords k2 ON (k2.key_page_id = p.page_id)
WHERE k.key_name='purz'
    AND k2.key_name='puzy';

关于MySQL 搜索引擎 - AND 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6466434/

相关文章:

java - 在 JSP 中更新数据库

mysql - 将一列复制到不同表mysql中的另一列

php - fatal error : Uncaught exception 'Zend_Exception' with message 'No entry is registered for key ' Zend_Db''

正确处理 HTML 查询的 PHP 代码

php - 使用 php 和 mysql 随机横幅显示

php - 如何输出 MySQL 表的所有行并包含一个用于计算重复项的列?

MySQL 表 '/tmp/#.....MYI' 的 key 文件不正确;尝试修复它

php - 如何在 Yii 1.6 管理 View 中获取基于外键的名称?

mysql - 在 MATCH() AGAINST() 中查找匹配列的名称或别名

mysql - 我想要一个 mysql 查询。所有包含大写字母的字段