我有一个MySQL表,其中包含默认值和覆盖值,简化后,如下所示:
create table t (
identifier varchar(20),
override varchar(20),
data1 int,
data2 varchar(2),
...
)
我希望从override
列中删除表中没有空白的所有项目。 除非,否则会有一行具有相同的identifier
和一个非空override
。在这种情况下,我希望override
返回而不是。
我怀疑我想用GROUP BY
做一些事情来选择行,但我无法弄清楚如何确保我在datax
列中获得正确的值。
答案 0 :(得分:0)
以下是我将如何实现解决方案...执行子查询并获取sameIdentifierWithOverride
- 这是表中具有相同标识符但具有非空的覆盖的行数。然后,您可以使用having
过滤结果..
select *,
(select count(*) from t t2 where t2.identifier=t.identifier and t2.override != '') sameIdentifierWithOverride
from t where override='' having sameIdentifierWithOverride=0