MYSQL,如何使用条件检索具有多个相同值的行
我在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
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”吗?是的。这不能给我想要的结果。