获取值为

时间:2017-08-22 23:06:09

标签: mysql

我有一个MySQL表,其中包含默认值和覆盖值,简化后,如下所示:

create table t (
    identifier varchar(20),
    override varchar(20),
    data1 int,
    data2 varchar(2),
    ...
)

我希望从override列中删除表中没有空白的所有项目。 除非,否则会有一行具有相同的identifier和一个非空override。在这种情况下,我希望override返回而不是

我怀疑我想用GROUP BY做一些事情来选择行,但我无法弄清楚如何确保我在datax列中获得正确的值。

1 个答案:

答案 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