2012-10-08 44 views
5

Tôi có thể đang có khoảnh khắc không có trí tuệ.MySQL GROUP_CONCAT nhiều trường

Tôi muốn trả về một chuỗi số sử dụng GROUP_CONCAT từ hai trường trong cơ sở dữ liệu của tôi. Tôi đã thực hiện việc này cho đến nay bằng cách sử dụng các mục sau:

SELECT t_id, 
CONCAT(GROUP_CONCAT(DISTINCT s_id),',',IFNULL(GROUP_CONCAT(DISTINCT i_id),'')) AS all_ids 
FROM mytable GROUP BY t_id 

Điều này làm việc tốt nhưng nếu i_id là NULL thì tất nhiên tôi nhận được dấu phẩy không cần thiết. Có cách nào tốt hơn để làm điều này vì vậy tôi không kết thúc với một dấu phẩy ở cuối nếu i_id là NULL?

Trả lời

13

Bạn cần phải sử dụng CONCAT_WS để tránh thêm comma cho NULL giá trị, hãy thử này:

SELECT t_id, 
     CONCAT_WS(',', GROUP_CONCAT(DISTINCT s_id), 
       GROUP_CONCAT(DISTINCT i_id)) AS all_ids 
FROM mytable 
GROUP BY t_id; 
+0

Điều đó sẽ thay thế bất kỳ dấu phẩy kép (,,) với một trong những đơn (,) nhưng đó không phải là vấn đề của tôi . Nếu i_id là null tôi kết thúc với một kết quả như vậy 2,6,8, khi những gì tôi cần là 2,6,8 –

+0

'CONCAT_WS' sẽ làm việc cho bạn. – Omesh

+0

Cảm ơn. Điều đó hoạt động rất tốt. –

Các vấn đề liên quan