Mysql 带子查询的SQL查询
我的数据如下:Mysql 带子查询的SQL查询,mysql,sql,subquery,mysql-dependent-subquery,Mysql,Sql,Subquery,Mysql Dependent Subquery,我的数据如下: data1_qqq_no_abc_ccc data1_qqq_abc_ccc data2_qqq_no_abc_ccc data2_qqq_abc_ccc data3_qqq_no_abc_ccc data4_qqq_no_abc_ccc data4_qqq_abc_ccc 现在,我想得到数据有子字符串但没有子字符串的字段。在上面的示例中,其数据为3 我正在尝试为它创建一个查询。 粗糙的是 select SUBSTRING_INDEX(name, 'abc', 1) fr
data1_qqq_no_abc_ccc
data1_qqq_abc_ccc
data2_qqq_no_abc_ccc
data2_qqq_abc_ccc
data3_qqq_no_abc_ccc
data4_qqq_no_abc_ccc
data4_qqq_abc_ccc
现在,我想得到数据有子字符串但没有子字符串的字段。在上面的示例中,其数据为3
我正在尝试为它创建一个查询。
粗糙的是
select SUBSTRING_INDEX(name, 'abc', 1)
from table1
where SUBSTRING_INDEX(name, 'abc', 1) not LIKE "%no"
and NOT IN (select SUBSTRING_INDEX(name, '_no_abc', 1)
from table
where name LIKE "%no_abc");
像这样的东西(?)
像这样的东西(?)
为什么不干脆这样做:
其中的名称像“%no abc%”
??@MadhurBhaiya我只需要没有abc但没有“abc”的行。例如,仅在上述示例中使用data3。其中像“%no abc%”这样的名称会给我所有的行,比如data1、data2、data3、data4。所有没有abc的行也有abc…@jarlh是的。基本上我需要有_no-abc但没有_abc的字段。例如上面例子中的数据3。现在我明白了。。。等等。为什么不干脆这样做:其中的名称像“%no abc%”
??@MadhurBhaiya我只需要没有abc但没有“abc”的行。例如,仅在上述示例中使用data3。其中像“%no abc%”这样的名称会给我所有的行,比如data1、data2、data3、data4。所有没有abc的行也有abc…@jarlh是的。基本上我需要有_no-abc但没有_abc的字段。例如上面例子中的数据3。现在我明白了。。。等等。@jarlh-我知道这种感觉。)奥托沙瓦泽非常感谢你的回答。但是我刚刚意识到数据格式比我写的更奇怪,上面的答案不适用于确切的数据格式。我重新编辑了这个问题。很抱歉给你添麻烦。@jarlh-我知道这种感觉。)奥托沙瓦泽非常感谢你的回答。但是我刚刚意识到数据格式比我写的更奇怪,上面的答案不适用于确切的数据格式。我重新编辑了这个问题。很抱歉给你添麻烦。
create table t (
col text
);
insert into t
values
('data1_qqq_no_abc_ccc'),
('data1_qqq_abc_ccc'),
('data2_qqq_no_abc_ccc'),
('data2_qqq_abc_ccc'),
('data3_qqq_no_abc_ccc'),
('data4_qqq_no_abc_ccc'),
('data4_qqq_abc_ccc');
select f from (
select SUBSTRING_INDEX(col, '_', 1) as f, SUBSTRING_INDEX(col, '_', -3) as s from t
) tt
group by f
having
count(case when s = 'no_abc_ccc' then 1 end) > 0
and
count(case when s like '%qqq_abc%' then 1 end) = 0