gpt4 book ai didi

SQL查询只获取在特定列中包含给定值的记录

转载 作者:行者123 更新时间:2023-11-29 12:41:17 24 4
gpt4 key购买 nike

我有下表:

表A

Aid, Cid, Jid
A1, C1, J1
A2, C1, J2
A3, C2, J1
A4, C2, J3

表 C[Cid, X] 以 Cid 作为表 A 中的外键。

我想从包含 Jid J1 和 J2 的表 A 中获取所有 CIds。对于上表,我想返回 C1 作为输出。如果我放置一个 AND 子句,我不会得到任何记录,如果我为 J 列放置一个 OR 子句,我也会在输出中得到 C2。请协助。

最佳答案

您可以将 HAVING COUNT ( DISTINCT)CASE block 一起使用或者,按照 Salman 的建议,在 where 子句中过滤它。

SQL Fiddle

PostgreSQL 9.6 架构设置:

CREATE TABLE TableA
(Aid varchar(3), Cid varchar(3), Jid varchar(3))
;

INSERT INTO TableA
(Aid, Cid, Jid)
VALUES
('A1', 'C1', 'J1'),
('A2', 'C1', 'J2'),
('A3', 'C2', 'J1'),
('A4', 'C2', 'J3'),
('A5', 'C2', 'J3'),
('A7', 'C3', 'J2'),
('A8', 'C3', 'J2'),
('A9', 'C4', 'J1'),
('A10','C4', 'J1'),
('A11','C1', 'J3'),
('A12','C1', 'J2')

;

查询 1:

SELECT cid
FROM TABLEA
GROUP BY cid
HAVING COUNT (DISTINCT CASE jid
WHEN 'J1' THEN 'J1'
WHEN 'J2' THEN 'J2'
END) = 2

Results :

| cid |
|-----|
| C1 |

查询 2:

SELECT cid
FROM TABLEA
WHERE jid IN ('J1', 'J2')
GROUP BY cid
HAVING COUNT ( DISTINCT jid ) = 2

Results :

| cid |
|-----|
| C1 |

关于SQL查询只获取在特定列中包含给定值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48728809/

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