如何在不创建临时列的情况下按邮箱域名排序查询结果?
按邮箱域名排序的替代方案
你完全不用在查询结果里生成domain列,直接把提取域名的函数写在ORDER BY子句里就能实现按域名排序,同时只返回邮箱地址:
SELECT email FROM table ORDER BY SUBSTRING_INDEX(email, '@', -1)
如果确实需要在结果里同时显示邮箱和域名,但不想依赖别名排序,也可以直接在ORDER BY里重复函数逻辑(不过可读性不如用别名):
SELECT email, SUBSTRING_INDEX(email,'@',-1) AS domain FROM table ORDER BY SUBSTRING_INDEX(email,'@',-1)
第一种方案更贴合你“无需临时列”的需求,它不会在查询结果中额外输出域名列,直接通过函数完成排序逻辑。
内容的提问来源于stack exchange,提问作者user2399035
相关产品推荐
相关产品推荐

