2014-12-07 70 views
1

我有一個表,我想檢查一列中所有的值是否相同。從一個表中選擇查詢來檢查列中是否存在相同的值,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

回答

2

通過使用組,並具有能得到你想要的東西:

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

0

你可以這樣做:

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

相關問題