从一个表中选择查询来检查列中是否存在相同的值,mysql select查询

问题描述:

我有一个表,我想检查一列中所有的值是否相同。从一个表中选择查询来检查列中是否存在相同的值,mysql select查询

以下是我的表格中的条目。

两个列

rid,value 
(1,1) 
(1,1) 
(2,1) 
(2,0) 
(2,0) 
(3,0) 
(3,0) 
(3,0) 

我要查询这使我摆脱1,因为其所有的值是1。1除掉所有记录的值为1,消除2和3不具有的所有值设为1,这样他们不应该被选中。

+0

顺便说一句,你的pk是什么? – Strawberry 2014-12-07 10:11:11

通过使用组,并具有能得到你想要的东西:

SELECT rid, value 
    FROM my_table 
    GROUP BY rid 
    HAVING COUNT(distinct value) = 1 

UPDATE

根据该意见,筛选价值将得到的结果:

SELECT * 
FROM 
    (
    SELECT rid, value 
    FROM my_table 
    GROUP BY rid 
    HAVING COUNT(distinct value) = 1 
    ) AS T1 
WHERE value = 1 

如果值只会是1或0,那么你可以这样做:

SELECT rid, value 
    FROM my_table 
    GROUP BY rid 
    HAVING COUNT(*) = SUM(value) 
+0

感谢您的回复,但这并没有给我所需的结果,正如你在我的表中看到的,它只有1和0作为价值。所以即使对于rid 3所有的值都是0,结果也不应该返回3。结果应该只有一行,根据我的记录,应该摆脱1. – Satish 2014-12-08 08:45:44

+0

回答更新,请检查它。 – 2014-12-08 08:55:28

+0

谢谢Jaugar Chang宝贵的时间... – Satish 2014-12-08 10:27:59

你可以这样做:

CREATE TABLE my_table (
    id varchar(255), 
    col_value varchar(255) 
); 
INSERT INTO my_table 
    VALUES 
     ('1','1'), 
     ('1','1'), 
     ('2','1'), 
     ('2','1'), 
     ('2','1'), 
     ('2','4'), 
     ('3','1'), 
     ('3','1'); 

查询选择:

SELECT src.* FROM 
(
    SELECT DISTINCT t1.* FROM my_table AS t1 
) AS src 
WHERE src.id NOT IN(
     SELECT test.id 
     FROM 
     (
      SELECT DISTINCT t1.* FROM my_table AS t1 
     ) AS test 
     GROUP BY test.id 
     HAVING COUNT(*) > 1 
) 

fiddle这里。

+0

感谢您的回复,但这并没有给我所需的结果,正如你在我的表格中看到的那样,它只有1和0的值。所以我只想摆脱值1 ..在你的查询中它给了我结果的所有记录的价值是相同的..请检查我给的数据... – Satish 2014-12-08 08:43:18