我在做一个sql两表查询,两个表名分别是:spzs和class_1
表spzs如下:
id  sortid   lanmu
1     83     技术
2     98     产品
3     60     运输
4     30
5     30 
6     20
7     20
8     60    运输     
表class_1如下:
sortid      sort
20         花岗岩
30         花草
60         社会
83         分数
98         电脑
(表class_内容不会重复,但表spzs中的sortid,lanmu值有许多重复值)
我的问题是:
   当表spzs中的lanmu不为空时 读取表class_1中与sortid相关的sort值,否则读取表spzs中的lanmu值。并且不能重复(如表spzs中两个sortid 20,只能读取表class_1一次,而不是两次)
   显示结果应是: 
       技术  产品  运输 花岗岩 花草
请教高手如何写SQL查询。谢谢!

解决方案 »

  1.   

    select distinct lanmu
    from
    (
    select * from spzs where lanmu is not null
    union all
    select spzs.id, spzs.sortid, class_1.sort from spzs 
    inner join class_1 on spzs.sortid=class_1.sortid
    where lanmu is null
    )tmp--resultlanmu      
    ---------- 
    产品
    花草
    花岗岩
    技术
    运输(5 row(s) affected)
      

  2.   

    应该是spzs.lanmu为空时与class_1表连接?
      

  3.   

    谢了!是的:应该是spzs.lanmu为空时与class_1表连接