テーブル名:グループ
id name
1 ONE
2 TWO
3 THREE
4 FOUR
5 FIVE
6 SIX
テーブル名:タイトル
id title groups isactive
1 First Title 1,2,4 yes
2 Second Title 2,5,7 yes
3 Third Title 3,1,2 yes
4 Fourth title 2,4,5 yes
リンク列:id
質問:
SELECT
t.*, g.name
FROM
`titles` AS t, groups AS g
WHERE
t.groups REGEXP CONCAT('^', g.id, '')
ORDER by title ASC, name ASC
結果:
id title groups isactive name
1 First Title 1,2,4 yes ONE
4 Fourth title 2,4,5 yes TWO
2 Second Title 2,5,7 yes TWO
3 Third Title 3,1,2 yes THREE
ここで、問題は、グループごとに1つのタイトルのみを選択したいということですが、グループ番号TWOに割り当てられた(id = 4および2)のような重複したグループ名が存在する可能性があります。
IDの高いものだけを表示するにはどうすればよいですか?その場合、結果は次のようになります:(id = 2を除く)
id title groups isactive name
1 First Title 1,2,4 yes ONE
4 Fourth title 2,4,5 yes TWO
3 Third Title 3,1,2 yes THREE
私もこのクエリを使用してみました:
SELECT
t.*, g.name
FROM
`titles` AS t, groups AS g
WHERE
t.groups REGEXP CONCAT('^', g.id, '')
GROUP by g.name
ORDER by t.id DESC
また
ORDER by t.id ASC
しかし、両方が示しています:
id title groups isactive name
3 Third Title 3,1,2 yes THREE
2 Second Title 2,5,7 yes TWO
1 First Title 1,2,4 yes ONE
デモをご覧ください-SQLフィドル