У меня есть база данных экземпляров гимнов, как они появляются в разных сборниках гимнов. Стол устанавливается примерно так:Как я могу группировать «одинаковые» строки разной длины?
CREATE TABLE `Hymns` (
`HymnID` int(11) unsigned NOT NULL AUTO_INCREMENT,
`HymnbookID` int(11) DEFAULT NULL,
`HyNumber` int(11) DEFAULT NULL,
`HyName` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`HyFirstLine` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`HyFirstLineDif` tinyint(1) NOT NULL DEFAULT '0',
`SongID` int(11) DEFAULT NULL,
`TextID` int(11) DEFAULT NULL,
`TuneID` int(11) DEFAULT NULL,
PRIMARY KEY (`HymnID`),
KEY `HymnbookID` (`HymnbookID`),
KEY `SongID` (`SongID`)
) ENGINE=MyISAM AUTO_INCREMENT=134381 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `Hymns` (`HymnID`, `HymnbookID`, `HyNumber`, `HyName`,
`HyFirstLine`, `HyFirstLineDif`, `SongID`, `TextID`, `TuneID`)
VALUES (642, 1, 26, 'Joseph Smith’s First Prayer',
'Oh, how lovely was the morning', 1, 26, 26, 26);
Иногда первые строки одинаковы, но отрезав в другом месте - и иногда они разные (буквы A и B не в базе данных Я просто положить их в, чтобы показать то же самое и разные):
О, как прекрасно было утро [A]
О, как мило [A]
О, как мило было утро! Лучистый луч [A]
O, как прекрасное было утро! [B]
Можно ли вернуть только самую длинную версию уникальных первых линий, как это ?:
Ах, как мило было утро! Лучистый луч [A]
O, как прекрасное было утро! [B]
Вот запрос, я до сих пор:
SELECT HyFirstLine
FROM Hymns
WHERE TextID = 26 AND HyFirstLine IS NOT NULL
GROUP BY HyFirstLine
EDIT: Данные возвращаются в Python как список словарей. На основании комментариев, может быть, лучше фильтровать после факта с Python? Я не знаю, как это сделать. Добавление тега Python.
требуется цикл это, например, PHP – SIDU
Мое подозрение в том, что вам нужно будет либо определенную пользователем функцию, чтобы справиться с этим , или, возможно, нужно использовать такой язык, как Java. –
Вы пытались перебирать через набор данных с помощью 'Cursor' или' TempTable'? – Eduard