Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带子查询的SQL查询_Mysql_Sql_Subquery_Mysql Dependent Subquery - Fatal编程技术网

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