SQL选择一对多要素关系,以选择具有特定要素的关键点
假设我有一个包含以下数据的表:SQL选择一对多要素关系,以选择具有特定要素的关键点,sql,postgresql,select,Sql,Postgresql,Select,假设我有一个包含以下数据的表: foreign-key | feature 1 | a 1 | b 2 | a 2 | b 2 | c 3 | a 3 | c 我想要一条语句,它返回一个唯一的键列表,这些键同时分配了功能a和功能b,因此结果行应该是“1,2” 假设我想向查询中添加额外的约束,如果整个内容不嵌套到多个层中就好了。这可以通过groupby和ha
foreign-key | feature
1 | a
1 | b
2 | a
2 | b
2 | c
3 | a
3 | c
我想要一条语句,它返回一个唯一的键列表,这些键同时分配了功能a和功能b,因此结果行应该是“1,2”
假设我想向查询中添加额外的约束,如果整个内容不嵌套到多个层中就好了。这可以通过
groupby
和have
实现
select foreign-key
from tbl
where feature in ('a','b')
group by foreign-key
having count(distinct feature)=2
这可以通过
分组方式
和拥有
来完成
select foreign-key
from tbl
where feature in ('a','b')
group by foreign-key
having count(distinct feature)=2
您还可以将
分组依据
与MIN/MAX()一起使用
:
选择外键
来自表t
其中特征位于('a','b')
按外键分组
具有最小(特征)和最大(特征);
您也可以将分组依据
与MIN/MAX()一起使用
:
选择外键
来自表t
其中特征位于('a','b')
按外键分组
具有最小(特征)和最大(特征);
只是提供了一种更方便的方法
它在计数不同时使用大小写
但也许你会想:这样一种反对代码高尔夫的罪恶有什么好处吗
好的,它使得用一个类似于标准的交换所有这些=
标准变得简单。
或ILIKE
标准(不区分大小写)
只是提供了一个更方便的方法
它在计数不同时使用大小写
但也许你会想:这样一种反对代码高尔夫的罪恶有什么好处吗
好的,它使得用一个类似于
标准的交换所有这些=
标准变得简单。
或ILIKE
标准(不区分大小写)
你用的是哪种数据库管理系统?我用的是postgresql。你用的是哪种数据库管理系统?我用的是postgresql。行“where feature in('a','b')是否也包含“like”语句?是的..并且having count…
必须相应地修改。根据我要找的功能的数量?我在考虑where lower(feature)in(如“%a%”,如“%b%”)
@salbeira如果SQL允许在IN中使用like的语法,那就太好了。但是看看我的答案。行“where FEATION IN('a',b')是否也包含“like”语句?是的。
具有count…必须进行相应的修改。根据我正在寻找的功能的数量?我正在考虑中较低(功能)的位置(如“%a%”,如“%b%”)
@salbeira如果SQL允许在in中使用like的语法,那就太好了。但是看看我的答案。
SELECT foreign-key
FROM tbl
WHERE (feature = 'a' OR feature = 'b')
GROUP BY foreign-key
HAVING COUNT(DISTINCT
CASE
WHEN feature = 'a' THEN 1
WHEN feature = 'b' THEN 2
END) = 2