gpt4 book ai didi

sql - 比较主条目并从子表中选择

转载 作者:行者123 更新时间:2023-11-29 13:02:38 24 4
gpt4 key购买 nike

我有一个主表

      Type       category_1  category_2 category_3 category_4
Type A Y N Y N
Type B Y Y Y N

和一个事务表

    Trans-ID    Type    category
1 A 1
2 A 1
3 B 4
4 B 1
5 A 2
6 B 3
7 A 3

我想从事务表中选择主表中类别为 Y 的所有条目。主表就像事务表的掩码。

输出将是:

    Trans-ID    Type    category
1 A 1
2 A 1
4 B 1
6 B 3
7 A 3

能否请您提供一些有关如何使用 postgres 解决此问题的提示?

最佳答案

假设 category_n 列的类型为 boolean

SELECT t.*
FROM transaction t
LEFT JOIN master m USING (type) -- must return single row
WHERE CASE t.category
WHEN 1 THEN m.category_1
WHEN 2 THEN m.category_2
WHEN 3 THEN m.category_3
WHEN 4 THEN m.category_4
ELSE FALSE -- should not occur
END;

此处括号是可选的。运算符优先级对我们有用。

如果引用完整性由外键约束和transaction.type 上的NOT NULL 约束强制执行,则可以使用[INNER] JOIN 而不是 LEFT [OUTER] JOIN

关于sql - 比较主条目并从子表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24871417/

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