在SQLite中,多个列的订购方式是否与组_concat相同?
我有一张这样的桌子:在SQLite中,多个列的订购方式是否与组_concat相同?,sqlite,group-concat,Sqlite,Group Concat,我有一张这样的桌子: title id name manager.....1......bob manager.....2......tim manager.....3.....suzy worker.....4.....john 我正在做一个查询:按标题选择标题、组名称(id)、组名称(name) 我得到的结果是: manager......1,2,3......bob,tim,suzy <-- id order and name order match wo
title id name
manager.....1......bob
manager.....2......tim
manager.....3.....suzy
worker.....4.....john
我正在做一个查询:按标题选择标题、组名称(id)、组名称(name)
我得到的结果是:
manager......1,2,3......bob,tim,suzy <-- id order and name order match
worker..........4..............john
经理……1,2,3……鲍勃、蒂姆、苏西这个词“任意”的意思是“任意”
无论如何,group_concat()
将按照读取实际行的顺序累积值。因此,如果您关心返回的值,则应在进行聚合之前对原始数据进行排序:
SELECT title, group_concat(id), group_concat(name)
FROM (SELECT title, id, name
FROM ...
ORDER BY title, id -- or whatever order you want
)
GROUP BY title;
理论上,SQLite的未来版本可能通过从索引或类似的内容中读取值来优化单个group\u concat()
调用。但因为这确实会改变行为,所以不太可能。在任何情况下,同一SQLite版本的行为都不会改变。感谢您的回答。为了澄清,我根本不关心具体的顺序,我只关心group\u concat(id)
的顺序与group\u concat(name)
的顺序相同。在您的示例中,子查询是否仅适用于group\u concat(name)
,而不适用于group\u concat(id)
?是否保证id
的行顺序与name
的行顺序相同?可能存在重复的
SELECT title, group_concat(id), group_concat(name)
FROM (SELECT title, id, name
FROM ...
ORDER BY title, id -- or whatever order you want
)
GROUP BY title;