sql - 多重选择中存在的sql select列。选择与列表中的所有值匹配的值

标签 sql sqlite

该选择语句:

select * from favoritetags where tagid = 4


退货

ID |tagid | favoriteid |
12 |4     |12          |
50 |4     |42          |
42 |4     |34          |


同样的声明:

select * from favoritetags where tagid = 29


返回值:

ID |tagid | favoriteid |
49 |29    |41          |
51 |29    |34          |


我只想获取两个列表中最喜欢的列表。

然后,我想对此进行概括,在这里我只能获得那些具有faviriteid与tagid列表共有的行中的内容。其中(29,4,6)中的tagid或任意数量的值。

最佳答案

您可以使用聚合:

select favoriteid
from favoritetags
where tag_id in (4, 29)
group by favoriteid
having count(distinct tag_id) = 2


where子句过滤属于心愿单的tag_id。该查询按favoriteid进行汇总,并确保每个favoriteid具有两个不同的tag_id(这实际上意味着429都可用)。

这可以轻松扩展到更多tag_id

select favoriteid
from favoritetags
where tag_id in (4, 29, 6)
group by favoriteid
having count(distinct tag_id) = 3

关于sql - 多重选择中存在的sql select列。选择与列表中的所有值匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018771/

相关文章:

sql - 单独放置 WHERE 语句以使 UNION 函数起作用

java - 带 BaseAdapter 的 ListView

java - 我正在使用带有 API 15 的 Android 手机作为测试设备。我尝试运行此应用程序,但它在加载后立即停止在我的设备上运行

SQL:修改具有唯一值的查询结果行

c# - 从 sql 查询 C# 填充系列

php - MySQL:获取前一条记录的ID

SQL - 在服务器上的所有数据库中搜索表名

android - sqlite 数据库更改时自动更新 ListActivity

android - 从 Assets 复制时数据库损坏

在执行全选时不选择空列的 SQL 查询简写