Как объяснено в моем комментарии, это связано с тем, что запрос (SELECT
) не работает в соответствии с вашими ожиданиями:
SELECT * FROM name WHERE grp = '$i' ORDER BY ctime DESC LIMIT 1
Возвращает самые последние (ctime
) для каждой группы.(grp
), но он не предусматривает упорядочение по группам.Для этого, и в зависимости от вашей точной схемы, вы должны переписать свой запрос в sth.как:
SELECT n1.*
FROM name n1
WHERE ctime = (SELECT MAX(n2.ctime)
FROM name n2
WHERE n2.grp = n1.grp);
- Внутренняя
SELECT
получает самую последнюю (максимальную, максимальную) метку времени для данного grp
. - Внешняя
SELECT
получает подробностизаписей, соответствующих самой последней (максимальной, максимальной) отметке времени для данной группы. - Возможно, вы захотите добавить также
LIMIT 1
к дополнительному SELECT
, если ваши данные представляют собой несколько записей на отметку времени (детализация временной метки).
Это не о tcl
, но это не означает, что вы не можете выполнять группировку / фильтрацию в Tcl как таковые.