反正是有讓MySQL查詢結果掌握多行作爲結果的查詢結果爲單排
(id,result1,[result21,result22, result23])
我試圖檢索結果,其中第三列是一個時間戳和它對應於相同的ID。
例如,我得到的結果
(21,29383)
(21,23988)
(22,23455)
(22,34564)
我想要的結果
(21,(29383,23988))
(21,(223455,34564))
反正是有讓MySQL查詢結果掌握多行作爲結果的查詢結果爲單排
(id,result1,[result21,result22, result23])
我試圖檢索結果,其中第三列是一個時間戳和它對應於相同的ID。
例如,我得到的結果
(21,29383)
(21,23988)
(22,23455)
(22,34564)
我想要的結果
(21,(29383,23988))
(21,(223455,34564))
我不熟悉的MySQL,但如果你得到你的結果的Python元組,你可以操縱數據結構上的Python側。一種可能的方式可能是:
from collections import defaultdict
results = [
(21,29383),
(21,23988),
(22,23455),
(22,34564)
]
d = defaultdict(list)
for your_id, result in results:
d[your_id].append(result)
results_as_tuples = tuple(
sorted([
(your_id, tuple(results)) for your_id, results in d.iteritems()
])
)
print results_as_tuples # --> ((21, (29383, 23988)), (22, (23455, 34564)))
嗨。我試過這個: 得到了錯誤: for your_id,導致結果: 「值錯誤:太多的值解壓縮」。但是iteritems()被用於這個權利? – 2013-03-14 06:05:00
將使用groupby()爲此工作? – 2013-03-14 06:46:15
@SumitSaurav:你得到的錯誤意味着你的元組包含兩個以上的條目。然而,在您的示例數據中,每個元組只包含兩個條目,所以這就是我的代碼示例的作用。 groupby()可能是一個選項,是的。 – pemistahl 2013-03-14 08:39:58
你可以發佈一些示例數據嗎? – fthiella 2013-03-13 17:43:12
請參閱'GROUP_CONCAT()'聚合函數。 – Barmar 2013-03-13 17:43:15
你可以發佈你正在使用的哪個mysql模塊以及你用來獲取結果的代碼嗎? – 2013-03-13 18:03:23