2014-10-29 78 views
-2

我需要從兩個表中選擇數據並顯示它,但我的PHP文件似乎在發佈重複項。我希望能夠提取所有描述並將其與表1中使用的ID關聯起來。過濾表中的重複項

我設法得到它的一些工作,但它顯示名稱傑克兩次是他們無論如何,我可以過濾掉重複。

感謝

這裏是我的代碼

$sql = "SELECT table1.name, table2.description 
     FROM table1 
     INNER JOIN table2 
     on table1.id = table2.customerid"; 

$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

    while($row = $result->fetch_assoc()) { 

     echo $row['name']."<br>"; 
     echo $row['description']."<br>"; 

    } 

table1的

id  name  
1  james    
2  jake    
3  aaron  
4  holly 

表2

id  customerid description 
1  1   hey1 
2  2   hey2 
3  2   hey3 
4  3   hey4 
5  4   hey5 
+1

什麼被認爲是重複的?所有條目看起來都不一樣... – 2014-10-29 23:35:03

+0

您是否嘗試過'SELECT DISTINCT'? – developerwjk 2014-10-29 23:35:32

+0

您可以使用['DISTINCT'](http://stackoverflow.com/questions/8571902/mysql-select-only-unique-values-from-a-column)約束。 – 2014-10-29 23:35:51

回答

1

可以使用DISTINCT約束。

;如果兩行被認爲是在一個DISTINCT查詢「相同」只有當行有所有列相同的值,你將它們分組:

SELECT DISTINCT table1.name,table2.description 
FROM table1 
INNER JOIN table2 
ON table1.id = table2.customerid 

否則,您可以使用GROUP BY聲明。但是隨後會出現一個問題:你會選擇哪個「描述」?由於傑克有兩個。 MySQL已經實現了幾個function aggregates。潛在的候選人是MIN它返回按字母順序排序的最小值。查詢然後顯示:

SELECT table1.name,MIN(table2.description) 
FROM table1 
INNER JOIN table2 
ON table1.id = table2.customerid 
GROUP BY table1.name 
+0

我確實嘗試過使用DISTINCT,但是由於某種奇怪的原因,它會打印出兩次傑克。 – Hashey100 2014-10-29 23:51:59

+0

就像指出的那樣,這是因爲兩行中的描述是不同的。 DISTINCT只在**全部**列相同的情況下才起作用。在另一種情況下,您應該使用「GROUP BY」。 – 2014-10-29 23:58:27