Mysql获取行仅包含具有特定值的行
假设“我的表”有以下行:Mysql获取行仅包含具有特定值的行,mysql,sql,database,Mysql,Sql,Database,假设“我的表”有以下行: 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 注意,现在示例中只有一个组,但我希望能够获得所有组。如何实
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
注意,现在示例中只有一个组,但我希望能够获得所有组。如何实现这种方法?下面的查询使用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
以下查询获取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
您的预期结果未按
prop1
分组。如果它是按prop1
分组的,那么在结果中只会得到一条记录
为了实现上述功能,我们可以编写一个简单的带有子查询的SELECT
,例如:
SELECT *
FROM table
WHERE prop1 IN (
SELECT prop1 FROM table WHERE prop2 = 'c'
);
您的预期结果未按
prop1
分组。如果它是按prop1
分组的,那么在结果中只会得到一条记录
为了实现上述功能,我们可以编写一个简单的带有子查询的SELECT
,例如:
SELECT *
FROM table
WHERE prop1 IN (
SELECT prop1 FROM table WHERE prop2 = 'c'
);
如果exists子句没有prop2=c,则可以使用exists子句删除所有行
select *
from your_table t1
where
exists (select 1 from your_table t2 where t1.prop1 = t2.prop1
and t2.prop2 = 'c')
解释:如果Exists caluse发现该组的c为false,它将返回true 如果exists子句没有prop2=c,则可以使用exists子句删除所有行
select *
from your_table t1
where
exists (select 1 from your_table t2 where t1.prop1 = t2.prop1
and t2.prop2 = 'c')
SELECT * FROM table WHERE prop2 != "c" GROUP BY prop1
解释:如果Exists caluse发现该组的c为false,它将返回true
SELECT * FROM table WHERE prop2 != "c" GROUP BY prop1
这一行将删除带有C的att行以及prop1上的组所有其他内容
此行将删除带有C的att行以及prop1上的其他所有内容。请澄清您的答案。按
prop1
分组可以有不同的prop2
,您想显示哪一个?请澄清您的答案。按prop1
分组可以有不同的prop2
,您想显示哪一个?我不是说按分组,行是根据prop1
@eyurdakul列出的。在这种情况下,上面的查询应该可以很好地工作是的,它可以很好地工作,但在我的情况下,我在生产环境中执行这个查询,它是一个巨大的表(而且条件不止是prop1和prop2)。我将对此进行升级投票,但这并不是解决我问题的方法。@eyurdakul我已删除了distinct
,因此现在应该更好。此外,在prop2
上设置索引将加快速度。。我不是说按分组,行是根据prop1
@eyurdakul列出的。在这种情况下,上面的查询应该工作良好是的,它工作良好,但在我的例子中,我在生产上执行这个查询,它是一个巨大的表(并且有比prop1和prop2更多的条件)。我将对此进行投票,但这并不是解决我问题的方法。@eyurdakul我已删除了distinct
,因此现在应该更好。此外,在prop2
上设置索引将加快速度。。