2012-03-08 111 views
0
Table1 
+----+--------------+ 
| id | csvalues | 
+----+--------------+ 
| 1 | 100;1001; | 
| 3 | 300;12; | 
| 4 | 400;44; | 
+----+--------------+ 


Table2 
+----+----------+--------+ 
| id | csvalues2|table1ID| 
+----+----------+--------+ 
| 1 | 10  | 1 | 
| 3 | 30  | 1 | 
| 4 | 111 | 3 | 
+----+----------+--------+ 

有這2個表格。 我不想得到這樣的結果SQL concat rows table2 into column table1

RESULT 
+----+----------------+ 
| id | csvalues  | 
+----+----------------+ 
| 1 |100;1001;10;30; | 
| 3 |300;12;111;  | 
+----+----------------+ 

這可能嗎?我嘗試左連接表,但無法將Table2.csvalues2獲取到RESULT.csvalues中。

回答

1

我想嘗試做這樣

SELECT Table1.ID, CONCAT(Table1.csvalues, ';', (SELECT GROUP_CONCAT(Table2.csvalues2 SEPARATOR ';') FROM Table2 WHERE Table2.table1ID = Table1.ID)) FROM Table1; 

東西在測試數據庫我quicky放在一起返回的這個你所期望的結果。

+0

這不太符合OP的期望輸出。它將返回id = 4,csvalues = NULL的第三行。 – 2012-03-08 15:21:31

2

以下是一個解決方案,可用於您的示例數據。我用了一個內部聯接,而不是一個左連接,因爲你的榜樣意味着你只希望包括從表1的行已經在表2相關行:

select Table1.id, 
    concat(Table1.csvalues,group_concat(Table2.csvalues2 separator ';'),';') as csvalues 
from Table1 
    inner join Table2 on Table2.table1ID = Table1.id 
group by Table1.id; 
+0

實際上,您的解決方案無法正常工作:-)「;」將Table1和Table2的輸出分開是錯誤的地方。 – 2012-03-08 15:28:21

+0

無論如何,我反饋了你的意見,因爲你的回答比我的「更加正確」:-D – 2012-03-08 15:32:21

+0

通常我會在Table1和Table2的輸出之間放置一個分隔符,但是在這個樣本數據集中已經有一個尾隨的分號表格1的數據不需要。樣本輸出也有一個尾隨的分號,所以我最後添加了它。 – 2012-03-08 15:41:02

相關問題