我有三张表: 新闻动态
news_id | other fields..
标签
tag_id | other fields..
和连接表TAGS_NEWS
tag_id | news_id
我想按标签从新闻表中选择数据。但问题是我应该通过许多标签来选择数据。我只能创建此问题的一种解决方案,首先通过一个标签选择数据,而不是通过另一个标签选择数据,依此类推。但我认为这不是解决这个问题的好方法。也许是解决这个问题的最好方法?也许我可以在一个查询中选择必要的数据?
例如,NEWS_TAG 表:
tag_id | news_id
1 1
3 12
4 11
1 10
6 1
7 2
8 3
9 3
10 3
按标签1,6选择数据
获取结果:news_id = 1
,
或按标签 8,9 选择数据
获取结果:news_id = 3
最佳答案
我想我遇到了你的问题,并且我必须解决类似的问题。
尝试这个解决方案:
select *
from news
join news_tags on news_tags.news_id = news.id
where news_tags.tags_id in(1,2)
group by news.id
having count(*) = 2
您必须传输到此查询的唯一内容是 tags_id
集(在我的示例中为 1,2
)以及 tags_id 的数量
(在我的示例中为 2
)。
我已经用 SQL Fiddle 对其进行了测试.
关于java - 按数组选择数据。 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29205231/