Chọn nhiều giá trị từ cùng một cột; thống kê một sql


7

Tôi đang tìm cách trả về một danh sách người dùng từ cơ sở dữ liệu. Có hàng trăm người dùng trong db. Mỗi người dùng có user_id riêng. Tất cả các giá trị mà tôi đang cố gắng trả về nằm trong cùng một cột (meta_value).

Cấu trúc cơ sở dữ liệu như sau:

id | user_id | meta_key | meta_value

dữ liệu mẫu như sau:

1 | 3434 | tên đầu tiên | Brandon
2 | 3434 | Last_name | Johnson
3 | 3434 | đường phố | 123 chính
4 | 3434 | thành phố | biển cả
5 | 3434 | nhà nước | Texas

Tôi đang cố gắng trả lại tên, họ, street_add, thành phố và tiểu bang trong một tuyên bố sql.

Tôi muốn đầu ra trông giống như:

Brandon, Johnson, 123 Main, Ocean Beach, Texas 

Có phải tất cả user_ids đều tôn trọng cùng một thứ tự, đầu tiên là tên đầu tiên so với tên cuối cùng, v.v., được sắp xếp theo id? Bạn có thể sử dụngSELECT user_id,GROUP_CONCAT(meta_value ORDER BY id) FROM t GROUP BY user_id
Mihai

Khi bạn nói "một truy vấn", bạn có nghĩa là "một hàng?" Một ví dụ về đầu ra dự kiến ​​của bạn sẽ hữu ích.
Michael Green

Michael Green - Tôi chỉ tìm cách kéo tất cả các hồ sơ trong một tuyên bố sql duy nhất. Tôi cập nhật bài viết để hiển thị đầu ra mong muốn. Tôi muốn lấy tất cả thông tin của người dùng từ cơ sở dữ liệu trong đầu ra như trên để xuất sang bảng excel
brandon-estrella-dev

Mihai - Có nhiều bản ghi trong cột meta_value hơn chỉ tên, họ, địa chỉ, thành phố, tiểu bang và zip. Tuy nhiên, đó là những hồ sơ duy nhất tôi đang tìm cách để kéo.
brandon-estrella-dev

SELECT user_id,GROUP_CONCAT(meta_value ORDER BY id) FROM t WHERE meta_key IN('first_name','last_name',etc) GROUP BY user_id
Mihai

Câu trả lời:


9

Chỉ cần sử dụng GROUP_CONCAT với điều kiện WHERE

SELECT user_id,GROUP_CONCAT(meta_value ORDER BY id) 
FROM t 
WHERE meta_key  IN('first_name','last_name','street_add','city','state') 
GROUP BY user_id
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.