我在做一个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查询。谢谢!
表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查询。谢谢!
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)