[英]Mysql fetch rows only contain a row with certain value
可以说,我的表具有以下行:
id | prop1 | prop2
______________________
1 foo a
2 bar a
3 foo b
4 bar b
5 foo c
现在在这种情况下,我想获取按prop1
分组的行,但忽略不包含prop2=c
的行的组
因此,预期结果是:
1 foo a
3 foo b
5 foo c
请注意,示例中现在只有一组,但是我希望能够全部获得。 我如何实现这种方法?
您的预期结果未按prop1
分组。 如果它是按prop1
分组的,则结果中将只获得一个记录。
为了达到上述目的,我们可以使用子查询编写一个简单的SELECT
,例如:
SELECT *
FROM table
WHERE prop1 IN (
SELECT prop1 FROM table WHERE prop2 = 'c'
);
如果不存在prop2 = c,则可以使用exist子句删除所有行,请使用以下查询。
select *
from your_table t1
where
exists (select 1 from your_table t2 where t1.prop1 = t2.prop1
and t2.prop2 = 'c')
解释:如果存在针对该组的c,否则现有caluse将返回true。
以下查询获取prop2 ='c'(T1)的所有记录,并将它们联接到所有具有相同prop1的记录(T2)上:
select T2.*
from TABLE T1
join TABLE T2 ON T1.prop1=T2.prop1
WHERE T1.prop2 = 'c'
GROUP BY id
SELECT * FROM table WHERE prop2 != "c" GROUP BY prop1
该行将删除带有C的att行,并在prop1上将所有其他内容分组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.