2016-12-02 66 views
0

Iam嘗試寫入mysql查詢。我的表結構如下:在逗號中使用相同ID的MYSQL查詢記錄

=========================== 
tender_id | supplier_name 
=========================== 
160001  Tata 
160005  Wilsons Limited 
160008  Tilkom LTD 
160008  DULUB LLC 
160008  DULUB LLC 
============================ 

現在我需要它應該產生如下的結果就是當過一個tender_id已經超過一個supplier_name那麼它應該有一個逗號查詢的幫助。 Iam不確定我是否可以通過查詢來實現此目的。我知道擺脫PHP腳本這個結果,但只是想知道如果我能做到這一點與MySQL查詢:

==================================== 
tender_id | supplier_name 
==================================== 
160001  Tata 
160005  Wilsons Limited 
160008  Tilkom LTD, DULUB LLC 
==================================== 

我開始用下面這個查詢:

SELECT tender_id, supplier_name FROM `quotation_items` group by tender_id, supplier_name 
+0

group_concat是你需要的! – Jens

回答

0

你應該在tender_id列單獨做一個GROUP BY,並使用GROUP_CONCAT到骨料供應商到CSV列表:

SELECT tender_id, GROUP_CONCAT(DISTINCT supplier_name) AS supplier_name 
FROM quotation_items 
GROUP BY tender_id 

注意,對於GROUP_CONCAT默認的分隔符是逗號,但如果你想一個不同的你可以使用SEPARATOR來指定它。

演示在這裏:

SQLFiddle

+0

它的工作正常。但在某些情況下,例如tender_id 160008獲得了兩次相同的supplier_name。但在逗號分隔的結果中,它只能顯示一次。那可能嗎? 160008 Tilkom LTD,DULUB LLC –

+0

@SanjuMenon只需使用'GROUP_CONCAT(DISTINCT supplier_name)' –

+0

非常感謝,其工作正常 –

2

您需要使用GROUP CONCAT。您的查詢應該是這樣的:

SELECT tender_id, GROUP_CONCAT(DISTINCT supplier_name SEPARATOR ', ') 
FROM `quotation_items` 
GROUP BY tender_id; 

爲避免重複名稱,只需在GROUP_CONCAT函數中添加DISTINCT關鍵字。

1
SELECT * FROM my_table; 

結果:

+-----------+-------------------+ 
| tender_id | supplier_name  | 
+-----------+-------------------+ 
| 160001 | Tata    | 
| 160005 | Wilsons Limited | 
| 160008 | Tilkom LTD  | 
| 160008 | DULUB LLC   | 
+-----------+-------------------+ 

試試這個:

SELECT 
    tender_id, 
    GROUP_CONCAT(supplier_name SEPARATOR ", ") concated_field 
FROM my_table 
GROUP BY tender_id; 

結果:

+-----------+-------------------------+ 
| tender_id | concated_field   | 
+-----------+-------------------------+ 
| 160001 | Tata     | 
| 160005 | Wilsons Limited   | 
| 160008 | Tilkom LTD, DULUB LLC | 
+-----------+-------------------------+ 
+0

感謝您的指導。 –