java - 按数组选择数据。 sql

标签 java sql oracle

我有三张表: 新闻动态

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/

相关文章:

oracle - PL/SQL - 检索输出

java - 为什么 Spark 数据帧缓存在这里不起作用

mysql - SQL 查询 - 从以逗号分隔的一列中获取数据

sql - Oracle:月份无效

mysql - 备份 MySQL 数据库并以另一个名称恢复它

sql-server - SQL Server 与 Oracle

sql - Excel 到具有较大数据集(>2000 条记录)的远程 oracle 数据库。使用支持 FetchSize 的驱动程序存储 proc 调用

java - 自动生成站点地图

java.lang.NoClassDefFoundError : net/sf/json/JSONArray

java - 谷歌日历 API Java