gpt4 book ai didi

sql - 从满足两个条件的同一列中选择数据

转载 作者:行者123 更新时间:2023-12-04 13:45:46 27 4
gpt4 key购买 nike

我有表 1 的数据:

+----+---------+-------+
| ID | GenreID | Title |
+----+---------+-------+
| 1 | 1 | Fox |
| 2 | 12 | Fox |
| 3 | 1 | Cat |
| 4 | 4 | Cat |
| 5 | 1 | Lion |
| 6 | 12 | Lion |
| 6 | 3 | Tiger |
| 5 | 12 | Tiger |
+----+---------+-------

如何获得 GenreID = 1 和 12 的标题?

我想要的结果是返回标题:FoxLion。但如果我使用 IN,结果是:foxlioncattiger

最佳答案

由于您要返回同时具有 GenreId = 1 AND GenreID = 12 的行,因此您必须使用一些关系除法。该查询将使用 IN 子句返回具有您想要的 GenreIDs 的行,但您还将使用 GROUP BYHAVING 过滤掉同时具有以下内容的行:

select title
from yourtable
where genreid in (1, 12)
group by title
having count(distinct genreid) = 2;

参见 SQL Fiddle with Demo .这将返回 FoxLionHAVING 子句计算返回的 GenreIDs 的不同数量。在这种情况下,您希望它等于 2,即 WHERE 子句中包含的 ID 总数。

有许多不同的方法可以获得结果,包括跳过 WHERE 子句并在 HAVING 中使用聚合函数和一些条件逻辑:

select title
from yourtable
group by title
having sum(case when GenreID = 1 then 1 else 0 end) = 1
and sum(case when GenreID = 12 then 1 else 0 end) = 1;

参见 SQL Fiddle with Demo

关于sql - 从满足两个条件的同一列中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com