2012-09-20 60 views
1

我正在訪問與公司綁定的名稱的數據庫。名稱在表格中是唯一的。可能有多個人擁有同一家公司。如果重複,我只需要返回公司的ONCE實例,以便我可以根據公司顯示信息。我的代碼如下:僅從重複行中返回一行

$result = $pdo->query('SELECT * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company'); 

這顯然不工作,我不想指定個別公司。我只想要能夠返回數據庫中所有公司的列表。如果有多個條目具有相同的公司名稱,則只需返回其中一個。

編輯 我選擇是在正確方向上的答案,但我結束了去答案是m.buettner的答案。

+0

在'SELECT'後加'DISTINCT' – MahanGM

+1

或LIMIT 1會在第一次比賽時停止 – 2012-09-20 20:36:21

回答

0

使用DISTINCT

$result = $pdo->query('SELECT DISTINCT * FROM vendoreducation WHERE company LIKE "TestCompany"'); 
+0

工作很好。謝謝! – mdance

+0

不客氣。請接受答案。謝謝! – fonini

0

$result = $pdo->query('SELECT * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company LIMIT 1');

OR

$result = $pdo->query('SELECT distinct * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company');

2

我將要求澄清的評論,但我缺乏代表,對不起。如果你每個公司只需要一行,它甚至不管其他列是什麼?或者你真的只想找出所有公司的名單?

對於後者,這應該這樣做:

$result = $pdo->query('SELECT DISTINCT company FROM vendoreducation;'); 

當然,你也可以包括這將是在同一家公司的所有行相同的列。但是,由於某些列可能具有不同的值(如您提及的名稱),因此使用DISTINCT*可能會再次爲您提供所有行。

編輯:如果你想每家公司一個整行,你可以簡單地使用由線以上檢索到的所有公司的名單,然後查詢一行爲每一個公司,通過使用LIMIT 1解決方案與每一個單個公司反過來。但是,也許你應該考慮normalization,如果這是一個選項(即,如果你可以改變數據庫)。

+0

在我接受另一個答案之前,我應該澄清更多,因爲你所說的最終我已經做了......我過早地接受了另一個答案,因爲它涵蓋了我所需要的前提。 – mdance

+0

沒關係,這裏的事情發生得太快了^^。然而,如果這是你實際尋找的東西,你仍然可以騰出點時間讓人們注意誰在發現這個問題的同時遇到同樣的問題;)...編輯:你也可以編輯你的問題澄清到人誰會在稍後找到它。 –