mysql匹配值,查找类似和排序,然后按原始匹配值对排序组进行排序

时间:2014-06-05 20:40:38

标签: php mysql sorting

似乎无法正确查询此查询。这就是我需要做的事情。

年龄在40以下,例如返回...

| NAME |--| AGE |
|------|--|-----|
| Amy  |  | 26  |
| John |  | 22  |
| Dan  |  | 30  |

查找与上面返回的名称类似的名称,并按字母顺序排序......

| NAME |--| AGE |
|------|--|-----|
| Aaron|  | 33  |
| Amy  |  | 26  |
| Jacob|  | 25  |
| John |  | 22  |
| Dan  |  | 30  |

按原始返回的年龄值值对字母组排序......

| NAME |--| AGE |
|------|--|-----|
| Jacob|  | 25  |
| John |  | 22  |-->was youngest from first query so his group goes first
| Aaron|  | 33  |
| Amy  |  | 26  |
| Dan  |  | 30  |

1 个答案:

答案 0 :(得分:0)

这应该允许您按年龄排序结果,然后按照与该人的第一个字母相匹配的名称排序。其他p1标准应替换为您用于确定第一组的其他标准:

SELECT p2.NAME, p2.AGE 
FROM PEOPLE p1
JOIN PEOPLE p2
ON substring(p1.NAME,1,1) = substring(p2.NAME,1,1)
WHERE p1.AGE < 40
AND OTHER p1 CRITERIA
ORDER BY p1.AGE, p2.NAME