【发布时间】:2011-09-21 22:13:41
【问题描述】:
我正在尝试在关键术语表和页面之间进行搜索查询。
考虑下表。
页数
page_id page_name 1 只猫 2 条狗 3人关键词
key_id key_name key_page_id 1 块 1 2 笨蛋 1 3 领口 2 4 约翰 3 5 块 3搜索词是 purz AND puzy 我希望查询结果只返回页面 id 1。
从页面、关键字中选择 page_id WHERE (key_name='purz OR key_name='puzy') AND key_page_id = page_id;返回
page_id 1 3我想要
page_id 1因为只有 purz 和 puzy 都与 Cats 相关联。
【问题讨论】:
-
另外我认为创建一个从关键字更新的临时关键字表可能更有效,我可以保证唯一性。我也在考虑这里的可扩展性。
-
您不需要临时表,只需在 KEYWORDS 表中的 2 个字段上添加唯一索引:key_name 和 key_page_id。这将保证您没有两次为同一页面使用相同的关键字。更改表
KEYWORDS添加唯一(key_name,key_page_id) -
对不起,我知道我的例子是抽象的,可能没有指定这些重复关键字的需要
标签: mysql