私は、様々な賛美歌集に登場するように、賛美歌のインスタンスのデータベースを持っています。どのように私は異なる長さの "同一の"文字列で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]
おはようございました!
SELECT HyFirstLine FROM Hymns WHERE TextID = 26 AND HyFirstLine IS NOT NULL GROUP BY HyFirstLine
EDIT:[B]
は、ここで私がこれまで持っているクエリのデータは、辞書のリストとしてPythonに返されています。コメントに基づいて、おそらくそれはPythonで事実の後ろをフィルタリングする方が良いでしょうか?私はそれをどうやってやるのかは分かりません。 Pythonタグを追加する。
必要プログラム、それは私の疑惑は、あなたがこれを処理するために、ユーザー定義関数を必要とするかということです – SIDU
例えばPHPは:テストされていない
しかし、あなたはおそらくこのようなものでストアドプロシージャを必要とするだろう場合によってはJavaのような言語を使用する必要があります。 –
'Cursor'や' TempTable'を使ってデータセットを反復しようとしましたか? – Eduard