0
我有一個讚美詩實例的數據庫,因爲它們出現在各種讚美詩。 該表設置大致是這樣的:如何GROUP BY「相同」的不同長度的字符串?
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]
早上好可愛啊! [B]
是否有可能只返回唯一的第一線中最長的版本,這樣?:
哦,多麼可愛是早晨!輻射光束[A]
早上好可愛啊! [B]
這裏的查詢我到目前爲止:
SELECT HyFirstLine
FROM Hymns
WHERE TextID = 26 AND HyFirstLine IS NOT NULL
GROUP BY HyFirstLine
編輯:將數據返回給Python作爲詞典列表。根據評論,也許最好用Python來過濾事實?我不知道我會如何去做這件事。添加Python標籤。
需要程序循環就如PHP – SIDU
我懷疑的是,你要麼需要一個用戶定義的函數來處理這,或者可能需要使用像Java這樣的語言。 –
您是否嘗試過使用'Cursor'或'TempTable'迭代數據集? – Eduard