Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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,如何使用条件检索具有多个相同值的行_Mysql - Fatal编程技术网

MYSQL,如何使用条件检索具有多个相同值的行

MYSQL,如何使用条件检索具有多个相同值的行,mysql,Mysql,我在MySql中有一个表,其中有一些数据如下: name value2 +---------+------------+ cust A 1 cust A 0 cust B 0 cust B 0 cust C 0 cust D 0 cust D 1 c

我在MySql中有一个表,其中有一些数据如下:

    name      value2   
+---------+------------+
  cust A      1        
  cust A      0         
  cust B      0         
  cust B      0         
  cust C      0         
  cust D      0         
  cust D      1         
  cust E      1         
  cust E      1  
  name      value2   
+---------+------------+
  cust B      0        
  cust C      0   
我想要的结果如下:

    name      value2   
+---------+------------+
  cust A      1        
  cust A      0         
  cust B      0         
  cust B      0         
  cust C      0         
  cust D      0         
  cust D      1         
  cust E      1         
  cust E      1  
  name      value2   
+---------+------------+
  cust B      0        
  cust C      0   
我尝试了下面的查询,但不起作用:

SELECT * 
  FROM table 
 WHERE name IN(SELECT * FROM table WHERE value2 = 0 GROUP BY name) 

请帮忙。谢谢。

这里有一种方法,使用
groupby
having
子句

select name, 0 as value2
from table t
group by name
having max(value2) = 0;

这里还有另一种方法,不使用
分组方式
拥有

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(12) NOT NULL,value2   TINYINT NOT NULL);

INSERT INTO my_table (name,value2) VALUES
('cust A',1),
('cust A',0),
('cust B',0),
('cust B',0),
('cust C',0),
('cust D',0),
('cust D',1),
('cust E',1),
('cust E',1);  

SELECT DISTINCT x.name
              , x.value2 
           FROM my_table x 
           LEFT 
           JOIN my_table y 
             ON y.name = x.name 
            AND y.value2 = 1 
          WHERE x.value2 = 0 
            AND y.id IS NULL;
+--------+--------+
| name   | value2 |
+--------+--------+
| cust B |      0 |
| cust C |      0 |
+--------+--------+
你说得对客户D’不会被上述查询消除。 要消除“cust D”,可以使用having子句,如下所示:

select name, value2 from table t where value2 = 0 group by name having count(value2) > 1;

谢谢你给出的所有答案。这不是也会报告“客户D”吗?是的。这不能给我想要的结果。