SQL分类帮助
我有一个按分类法关联内容的数据库,我正在尝试按分类法查询该内容。看起来是这样的:SQL分类帮助,sql,mysql,postgresql,Sql,Mysql,Postgresql,我有一个按分类法关联内容的数据库,我正在尝试按分类法查询该内容。看起来是这样的: Table 1 content_id, content_name Table 2 content_id, content_taxonmoy SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy=
Table 1
content_id, content_name
Table 2
content_id, content_taxonmoy
SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy='123'
我在查询中尝试的是查找具有两种或两种以上相关分类法类型的内容。我的查询如下所示:
Table 1
content_id, content_name
Table 2
content_id, content_taxonmoy
SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy='123'
除非它什么也不返回。我后来尝试了一个小组:
SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy='123'GROUP BY content_id, content_taxonomy
但这也不起作用。有什么建议吗
SELECT *
FROM content c
WHERE (
SELECT COUNT(*)
FROM taxonomy t
WHERE t.content_id = c.content_id
AND t.content_taxonomy IN ('ABC', '123')
) = 2
在分类法(content\u id,content\u taxonomy)
上创建一个唯一索引
或一个主键
,以便快速工作
SELECT c.*
FROM (
SELECT content_id
FROM taxonomy
WHERE content_taxonomy IN ('ABC', '123')
GROUP BY
content_id
HAVING COUNT(*) = 2
) t
JOIN content c
ON c.content_id = t.content_id
在这种情况下,在分类法(content\u taxonomy,content\u id)
上创建唯一索引
或主键
(注意顺序或字段)
任何一种解决方案都可能比另一种更有效,这取决于每个内容有多少分类法以及匹配的概率
在分类法(content\u id,content\u taxonomy)
上创建一个唯一索引
或一个主键
,以便快速工作
SELECT c.*
FROM (
SELECT content_id
FROM taxonomy
WHERE content_taxonomy IN ('ABC', '123')
GROUP BY
content_id
HAVING COUNT(*) = 2
) t
JOIN content c
ON c.content_id = t.content_id
在这种情况下,在分类法(content\u taxonomy,content\u id)
上创建唯一索引
或主键
(注意顺序或字段)
任何一种解决方案都可能比另一种更有效,这取决于每个内容有多少分类法以及匹配的概率