根据不同的条件查询不同的表 sql

简介:
/*
a表 a.user_id  a.name 
b表 b.user_id  b.name 
c表 c.user_id  c.user_type 

当c表的 c.user_type = "a" 时 它显示 a表的 a.name 
当c表的 c.user_type = "b" 时 它显示 b表的 b.name 
a,b,c表中的 a.user_id = c.user_id,b.user_id = c.user_id 

*/

if   object_id ( ' ta ' ) is   not   null   drop   table  ta
go
create   TABLE  ta( [ user_ID ]   int ,name  varchar ( 50 ))
INSERT   INTO  ta  select
1 , ' a1 '   union   all   select
2 , ' a2 '

if   object_id ( ' tb ' ) is   not   null   drop   table  tb
go
create   TABLE  tb( [ user_ID ]   int ,name  varchar ( 50 ))
INSERT   INTO  tb  select
1 , ' b1 '   union   all   select
2 , ' b2 '

if   object_id ( ' tc ' ) is   not   null   drop   table  tc
go
create   TABLE  tc( [ user_ID ]   int ,user_type  varchar ( 50 ))
INSERT   INTO  tc  select
1 , ' a '   union   all   select
2 , ' b '

select   *   from  ta
select   *   from  tb
select   *   from  tc

-- 方法一

select  c. [ user_id ] ,name = case  user_type  when   ' a '   then  a.name   when   ' b '   then  b.name  end
from  tc c,ta a,tb b
where  a. [ user_id ] = c. [ user_id ]   and  b. [ user_id ] = c. [ user_id ]   

-- 方法二

SELECT      tc. user_ID CASE  user_type  WHEN   ' a '   THEN  ta.name  WHEN   ' b '   THEN  tb.name  END AS  输出
FROM          tc  INNER   JOIN
                      ta 
ON  tc. user_ID   =  ta. user_ID   INNER   JOIN
                      tb 
ON  tc. user_ID   =  tb. user_ID


/*

user_ID     name
----------- --------------------------------------------------
1           a1
2           a2


user_ID     name
----------- --------------------------------------------------
1           b1
2           b2


user_ID     user_type
----------- --------------------------------------------------
1           a
2           b


user_id     输出
----------- --------------------------------------------------
1           a1
2           b2



*/

    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2009/12/05/1617458.html,如需转载请自行联系原作者



相关文章
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
|
SQL 数据库 数据库管理
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
365 11
|
SQL 关系型数据库 MySQL
mysql sql语句删除一个库下的所有表
mysql sql语句删除一个库下的所有表
122 1
|
SQL
现有用户成就统计需求,每个用户有多个成就,某一个成就会被多人拥有,写出数据表设计方案,用一条sql查出每个成就(B.ach_name)下的男生(sex=0)和女生(sex=1)分别有多少?
现有用户成就统计需求,每个用户有多个成就,某一个成就会被多人拥有,写出数据表设计方案,用一条sql查出每个成就(B.ach_name)下的男生(sex=0)和女生(sex=1)分别有多少?
135 0
|
SQL 监控 关系型数据库
PolarDB产品使用问题之SQL防火墙怎么拦截没有指定WHERE条件的特定表的SQL语
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
221 2
|
SQL 存储 测试技术
|
SQL 存储 数据库
SQL 撤销索引、撤销表以及撤销数据库
SQL 撤销索引、撤销表以及撤销数据库
208 4
|
SQL 存储 缓存
揭秘SQL中的公用表表达式:数据查询的新宠儿
揭秘SQL中的公用表表达式:数据查询的新宠儿
351 2
|
SQL 存储 关系型数据库
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
190 1