如何按关联表字段对数据表进行排序?
关联表字段排序失效的解决方案
你的问题出在标识符的引号使用错误:SQL中不能用单引号(')包裹表名或字段名,单引号是用来定义字符串常量的。你当前语句里的rp.'data'、rgl.'data3'会被数据库识别为固定字符串,而非字段,这就导致按rgl.'data3'排序时,实际是对同一个字符串值排序,看起来就像无效。
修正后的查询语句(去掉不必要的引号,或者用正确的标识符引号):
SELECT rp.data, ra.data2, rgl.data3 FROM rp_table rp JOIN ra_table ra ON rp.Id = ra.pruefungsId JOIN rgl_table rgl ON rp.uId = rgl.Id ORDER BY rp.data, rgl.data3 DESC
如果你的表名/字段名包含特殊字符或关键字,需要用反引号(MySQL)或双引号(PostgreSQL等遵循ANSI标准的数据库)包裹标识符:
SELECT rp.`data`, ra.`data2`, rgl.`data3` FROM `rp_table` rp JOIN `ra_table` ra ON rp.`Id` = ra.`pruefungsId` JOIN `rgl_table` rgl ON rp.`uId` = rgl.`Id` ORDER BY rp.`data`, rgl.`data3` DESC
修正后,数据库会正确识别rgl.data3为关联表的字段,排序功能就能正常生效。
内容的提问来源于stack exchange,提问作者Christian Stegemann
相关产品推荐
相关产品推荐

