2017-08-17 22 views
0

這裏是兩個表:如何從其他表中選擇一列作爲sql中的一列?

一個:

+-----+------------------------+ 
| id | conten     | 
+-----+------------------------+ 
| 1 | q.      | 
| 2 | q.      | 
| 3 | s.      | 
| 4 | g      | 
| 1 | a      | 
| 2 | a      | 
+-----+------------------------+ 

B:

+-----+------------------------+ 
| id | type     | 
+-----+------------------------+ 
| 1 | I.      | 
| 2 | II.     | 
| 3 | III.     | 
| 4 | IV      | 
| 5 | V      | 
| 6 | VI      | 
+-----+------------------------+ 

有沒有辦法從選擇和b,這樣的一個ID 2,會有一個額外的字段,將該ID的所有內容分組?選擇結果應該是這樣的:

+-----+------------------------+-----------+ 
| id | type     | contents | 
+-----+------------------------+-----------+ 
| 2 |I.      | q,a  | 
+-----+------------------------+-----------+ 

編輯 順便說一句,如果有一種方法通過sqlahcmey做到這一點,那將是甜的。

+1

是GROUP_CONCAT與GROUP – RiggsFolly

+0

mysql或sql server? – Eli

+0

@Eli mysql。對不起,錯誤的標籤 –

回答

1
SELECT b.id, b.type, IFNULL(GROUP_CONCAT(a.conten), '') AS contents 
FROM b 
LEFT JOIN a ON a.id = b.id 
GROUP BY b.id 

How do I write a group_concat function in sqlalchemy?對於如何GROUP_CONCAT轉化爲SQLAlchemy的。

+0

對不起,打擾你@barmar但是,什麼是在group_concat之前使用IFNULL?你也有單引號。只是好奇,因爲它是新的,想從我的錯誤中學習。 – Noob

+0

如果表b中沒有匹配的行,則GROUP_CONCAT()將返回NULL。這將該空值轉換爲空字符串。 – Barmar

+0

哎呀,我把桌子倒了,把它修好了。 – Barmar

相關問題