表名:组
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
现在,问题是我只想为每个组选择一个标题,但是,可能会有重复的组名,如 (id = 4 和 2) 都分配给了组号 TWO。
如何只显示高 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
最佳答案
试试这个
SELECT A.*, B.NAME FROM titles A
JOIN (
SELECT g.name, max(t.id) id
FROM titles AS t, groups AS g
WHERE t.groups REGEXP CONCAT('^', g.id, '')
group by g.name
) B on A.id = b.id
关于php - MySQL 使用 table1.id REGEXP table2.id 为同一组选择不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781918/