我想知道如何連接某些鍵的值。示例資料:
| ID | 鑰匙 | 價值 |
|---|---|---|
| 1 | 姓名 | 亞歷克斯 |
| 1 | 狀態 | 單身的 |
| 1 | 年齡 | 21 |
| 1 | 收入 | 20K |
| 1 | 高度 | 85 |
| 2 | 姓名 | 大衛 |
| 2 | 狀態 | 單身的 |
| 2 | 年齡 | 23 |
| 2 | 收入 | 10K |
| 2 | 高度 | 75 |
我嘗試僅連接Alex,21,85每個 id 的三個鍵。
所以我有類似的東西:
select case
when something then null
else concat(name.value, age.value, hight.value)
end
from names
那么為了得到這個值應該在 concat 中是什么?我不需要顯示鍵,只需顯示組合的值,Alex,21,85或者David,23,75每次每個 id 的值都不同,因此不能硬編碼。
uj5u.com熱心網友回復:
如果我理解正確,您有一個動態的鍵串列,例如name, age, hight,您希望為每個用戶顯示這些值。
您需要使用聚合和string_agg:
select id, string_agg(
"value", ','
) within group (order by charindex(',' "key" ',', ',name,age,hight,')) as csv
from t
where "key" in ('name', 'age', 'hight')
group by id
uj5u.com熱心網友回復:
DDL
CREATE TABLE person (
p_id INT AUTO_INCREMENT PRIMARY KEY,
p_name VARCHAR(255) NOT NULL
);
INSERT INTO person (p_name) VALUES ("Alex"), ("David"), ("Kate"), ("Lisa"), ("Maya");
您需要的查詢。有更多可用選項,因此您可能想繼續閱讀GROUP_CONCAT()
SELECT GROUP_CONCAT(p_name SEPARATOR ', ') as "string"
FROM person
WHERE p_id IN (2, 4, 5);
預期輸出:
| 細繩 |
|---|
| 大衛、麗莎、瑪雅 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441802.html
下一篇:如何分別按單個類別計算列的總和?
