gpt4 book ai didi

mysql - 在 MySQL : a clean way 中设置交集

转载 作者:行者123 更新时间:2023-11-29 05:38:31 26 4
gpt4 key购买 nike

我想获取满足我给它们的所有 n 个约束条件 的实体。

OR 操作可以由 UNION 执行。如果 MySQL 支持 INTERSECT,我就不会问这个问题了。

我在表 subject 中有实体,在 *subject_attribute* 中有它们的属性。

我认为 AND 操作的唯一方法是嵌套查询:

SELECT id
FROM subject_attribute
WHERE attribute = 'des_sen'
AND numerical_value >= 2.0
AND id
IN (
SELECT id
FROM subject_attribute
WHERE attribute = 'tough'
AND numerical_value >= 3.5
)

这意味着:“获取满足最低子查询的实体,然后消除满足更高查询的实体”等等。


rows(condn x) AND rows(condn y) AND rows(cond z) <--ideal
rows(condn x:rows(cond y:rows(cond z))) <-- I am stuck here

我更喜欢线性链接条件而不是按照我的意愿嵌套它们

  1. 以编程方式编写查询
  2. 更好地调试它们

我的问题:给定 n 个单独的查询,我如何在 MySQL 中干净且线性地对它们进行 AND 运算?

不是通过使用嵌套查询或存储过程。

请注意有关个别查询的部分。


更新:Jonathan Leffler 回答正确。 Mark Ba​​nnister 的回答要简单得多(但我做了一些错误的决定)。如果您仍然对连接感到困惑,请引用我的回答。

最佳答案

假设每个单独的查询都针对同一个表运行,并且每个查询都访问不同的 attribute 值,交叉所有此类查询的最简单方法是以下形式:

SELECT id
FROM subject_attribute
WHERE (attribute = 'des_sen' AND numerical_value >= 2.0) or
(attribute = 'tough' AND numerical_value >= 3.5) or
...
group by id
having count(distinct attribute) = N;

- 其中 N 是 attribute-numerical_value 条件对的数量。

关于mysql - 在 MySQL : a clean way 中设置交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664524/

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