2016-03-02 142 views
0

我試圖從一個表中選擇值,其中多於而不是另一個表中特定屬性的一個不同值。MySQL查詢 - 查找有多個不同值的所有記錄

我覺得應該是這樣的,但我似乎無法得到它的工作:

SELECT * value1 
FROM table1 
JOIN table2 ON table1.id=table2.id 
HAVING COUNT(DISTINCT value2) > 1 

OK,例如:

table1  table2 
id name  id hobby 
1  a  1  x 
2  b  1  x 
3  c  3  y 
4  d  4  z 

所以我想選擇所有名稱都有一個以上的愛好(在這種情況下,名稱爲a)。

我很欣賞這不是完全規範化的,而且非常簡化,但我似乎無法弄清楚如何在SQL中爲另一個值表示'多次出現'的值。

+0

value2在表1中? – zee

+0

不,值2在表2上 –

回答

0

嘗試用GROUP BY子句:

SELECT * value1 
FROM table1 
JOIN table2 ON table1.id=table2.id 
Group By table1.id 
HAVING COUNT(DISTINCT value2) > 1 

在評論還有人說,是表1表2或值2的一部分?

0

由於我們不知道表格的確切結構......這是我最好的猜測。請測試它並讓我知道。

select *  
    From table1 a , (select id , value2 from table2 
    Group By id , value2 HAVING COUNT(value2) > 1) b 
    where a.id = b.id1 
0

IMO你最好使用以下策略:

  1. 查找數據從table2 JOIN table1
  2. 從#1套,計算value2出現的每對夫婦value2/id
  3. 最後只保留記錄,這些發生> 1

所以,你可以試試這個:

SELECT T2.COUNT(*) AS `count`, T2.value2, T1.* 
FROM table2 T2 
    JOIN table1 T1 ON T1.id = T2.id 
GROUP BY T2.value2, T2.id 
WHERE `count` > 1 

BTW注意,我並沒有包括有關value1什麼,因爲我沒有看到,不僅是如何能在您的問題參與,也可能是什麼表示它在查詢示例中的顯示方式。