Я хотел бы выполнить групповой конкатат в SQLite только для тех записей, в которых имеется более одной строки для объединения. Кажется, что вы могли бы сделать это заранее (посчитайте записи, используя группу, затем удалите эти одиночные строки, прежде чем продолжить с group_concat); после (завершите group_concat, затем удалите строки, где ничего не было объединено); или возможно даже во время?
Мой вопрос: какой самый быстрый способ для SQLite это сделать?
Я разработал пример «после» с использованием APSW в Python, но не доволен им:
#set up a table with data
c.execute("create table foo(x,y)")
def getvals():
a = [1, 1, 2, 3, 3]
b = ['a','b','c','d','e']
for i in range(5):
yield a[i],b[i]
c.executemany("insert into foo values(?,?)",getvals())
c.execute('''create table fooc(a,b);
insert into fooc(a,b) select x, group_concat(y) from foo group by x''')
c.execute('select * from fooc')
c.fetchall() ## reports three records
c.execute("select * from fooc where b like '%,%'")
c.fetchall() ## reports two records .. what I want
Кажется безумным (и медленным?) Использовать LIKE для такого рода нужд.