日期:2014-05-18  浏览次数:20412 次

sql 查询两张表其中一张表根据另外一种表排序
表A 序号 默认厂商
  1 2
 
表B 序号 汽车厂商 
  1 奔驰
  2 宝马
  3 丰田
A 表默认厂商 = B表 序号

如何在查询完A表结果后 查询B表 B根据A表的结果排序 也就是 A.默认厂商对应的序号排在第一个



------解决方案--------------------
SQL code

select b.*
from b join a on b.序号=a.默认厂商
order by a.序号

-- try

------解决方案--------------------
SQL code

[code=SQL]
CREATE TABLE t1
(
    xuhao INT,
    name INT
)
INSERT INTO t1
SELECT 1, 2
CREATE TABLE t2
(
    xuhao INT,
    name VARCHAR(10)
)
INSERT INTO t2
SELECT 1, '奔驰' UNION ALL
SELECT 2, '宝马' UNION ALL
SELECT 3, '丰田'
SELECT * FROM t1
SELECT * FROM t2

SELECT * FROM t2 LEFT JOIN t1 ON t2.xuhao=t1.NAME ORDER BY CASE WHEN t1.xuhao IS NOT NULL THEN 0 ELSE 1 END 

------------------------
xuhao    name    xuhao    name
2    宝马    1    2
3    丰田    NULL    NULL
1    奔驰    NULL    NULL

------解决方案--------------------
SQL code
select b.* from b left join a on b.序号=a.默认厂商
order by case when a.序号 is not null then 1 else 2 end,b.序号