2014-02-07 26 views
1

選擇行我已經有數據表:與同一列

C1 || C2 || C3 
------------------- 
1  || user1 || 2 
2  || user2 || 2 
3  || user3 || 3 
4  || user4 || 3 
5  || user5 || 3 
6  || user6 || 2 

我要選擇具有列C3相等值的所有行。

回答

3

使用派生表制定出副本,然後再加入回到這個:

SELECT mt.* 
FROM MyTable mt 
JOIN 
(
    SELECT C3, COUNT(*) 
    FROM MyTable 
    GROUP BY C3 
    HAVING COUNT(*) > 1 
) X 
ON mt.C3 = X.C3; 

SqlFiddle here

顯然,在你的例子所有用戶都具有相同C3值的至少一個其他用戶。

+0

我需要你的支持,你能告訴我如何使用此查詢獲取列C3? – user2758988

+0

我不追隨 - 'mt。*'將包含'C1,C2和C3'。如果你只想C3,那麼'SELECT mt.C#...'。或者你的意思是你只是想過濾'哪裏Mytable.C3 = SomeValue'? @ khanxada的第一個答案就是這樣。 – StuartLC

+0

我的意思是如何在檢查後讀取列,例如:if(mysql_num_row($ query)> 0){while($ row = mysql_fetch_array($ query)){$ c3 = $ row ['C3']; }} – user2758988

0

如果你想獲得與該列有particullar值的行,然後選擇從表*其中C3 =「值」 如果你想以後等於是 選擇*擺脫表組等於C3一家上市行C3

1

只需做一組,通過並找出所需的C3值,並從中選擇

select * 
from table 
where c3 in 
(
select c3, count(c1) as tot 
from table 
group by c3 
having count(c1)>=2 
) 
0

如果你要選擇那些具有價值3

SELECT * FROM table WHERE C3=3; 

行或要選擇行中列C3包含值他們:

SELECT * FROM table WHERE C3 IS NOT NULL;