gpt4 book ai didi

mysql - 连接两个表,但使用 select 要求所有辅助列相同

转载 作者:行者123 更新时间:2023-11-29 08:00:07 24 4
gpt4 key购买 nike

仅当表选择中的所有列对于第二个表中的给定键具有相同的值时,我才尝试获取要输出的 select 语句。

示例如下:

下面的表“规则”对于每个规则 ID 具有相同的值(名称、年龄)。但是,“状态”值随“规则”表中的每一行(真/假)而变化。

我希望能够从表“规则”中进行选择,其中表“哈希”中的规则 ID 等于表“规则”中的“规则 ID”,并且仅在所有选定“状态”时才写入输出“哈希”中具有该“ruleid”的值等于表“哈希”中该规则 ID 的“状态”值。

示例输出应如下所示:

ruleid    name    age  col2
27488 Bob 99 xx // output because all the rows In Table Rule with ruleid=27488 have state=False
27455 Sue 23 xx // output because all the rows in Table Rule with ruleid=27455 have state=True
27444 Tim 34 xx // output because all the rows in Table Rule with ruleid=27444 have state=False

下面的示例表“Hash”有一个规则 ID 为 27460 的行,其状态 =“True”。表“规则”(如下)的行具有相同的“ruleid”和“state”值,除了一行 - 因此没有输出。如果“Rule”中该“ruleid”的所有行都具有与哈希中相同的“state”值,则输出应该是该“ruleid”行的一行。

哈希

+-------------+--------------+------------+-------+
| ruleid | state | colx | col2 |
+-------------+--------------+------------+-------+
| 27488 | False | XXX | XX |
| 27455 | True | XXX | XX |
| 27460 | True | XXX | XX |
| 27444 | False | XXX | XX |
+-------------+--------------+------------+-------+

规则

+-------------+--------------+------------+-------+
| ruleid | state | name | age |
+-------------+--------------+------------+-------+
| 27488 | False | Bob | 99 |
| 27488 | False | Bob | 99 |
| 27460 | True | Randy | 11 |
| 27460 | True | Randy | 11 |
| 27460 | False | Randy | 11 |
| 27455 | True | Sue | 23 |
| 27455 | True | Sue | 23 |
| 27455 | True | Sue | 23 |
| 27444 | False | Tim | 34 |
| 27444 | False | Tim | 34 |
| 27444 | False | Tim | 34 |
| 27444 | False | Tim | 34 |
+-------------+--------------+------------+-------+

最佳答案

select distinct r.ruleid,
r.name,
r.age,
h.col2
from hash h
join rule r on r.ruleId = h.ruleId
where not exists
(
select 1
from rule rr
where rr.ruleId = h.ruleId
and rr.state <> h.state
)

关于mysql - 连接两个表,但使用 select 要求所有辅助列相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038600/

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