MySQL技术问询:如何关联表按queno而非driverid排序?
解决方案
当然可以实现这个需求!你只需要通过表关联把test表和drivers表连接起来,然后基于drivers表的queno字段排序即可。
基础实现(确保关联数据存在)
如果test表中的所有driverid都能在drivers表中找到对应记录,使用INNER JOIN关联即可:
SELECT test.* FROM test INNER JOIN drivers ON test.driverid = drivers.driverid ORDER BY drivers.queno ASC; -- 若要倒序排序,把ASC改成DESC
兼容无关联数据的场景
如果test表中可能存在driverid在drivers表中没有匹配的记录,且你想保留这些数据,可以使用LEFT JOIN,同时用COALESCE处理queno为NULL的情况(比如把无匹配的记录排到最后):
SELECT test.* FROM test LEFT JOIN drivers ON test.driverid = drivers.driverid ORDER BY COALESCE(drivers.queno, 9999) ASC; -- 9999可替换为你认为足够大的数值
额外说明
- 如果你需要在结果中同时显示司机的相关信息(比如
driver名称),可以修改SELECT子句,例如:SELECT test.*, drivers.driver, drivers.queno - 排序方向可以根据需求调整,
ASC是升序(默认),DESC是降序
内容的提问来源于stack exchange,提问作者Nita
相关产品推荐
相关产品推荐

