我想获取满足我给它们的 所有n个约束的 实体。
或操作可以由UNION执行。我不会问这个问题,如果MySQL支持INTERSECT。
我在表 主题中 有实体,并且它们的属性在 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
我更喜欢线性地链接条件,而不是像我想的那样嵌套它们
我的问题: 给定 n个单独的查询 ,如何在MySQL中将它们整洁线性地相加?
不能通过使用嵌套查询或存储过程。
请注意有关单个查询的部分。
更新 :乔纳森·莱夫勒(Jonathan Leffler)回答正确。马克·班尼斯特(Mark Bannister)的答案要简单得多(但我做了一些错误的决定)。如果您仍然对联接感到困惑,请参考我的回答。
假设每个单独的查询都在同一个表上运行,并且每个查询都访问的不同值attribute,则与所有此类查询相交的最简单方法是以下形式:
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条件对的数量。
N