sql根据一个字段不同值查询不同表中的一个字段
我有一张表Post,我要根据这个表中的一个字段Role的不同而连接不同的表,当Role=1时,查询A表中的Name字段值,当Role=2时,查询B表中的Name字段值...
我有一张表Post,我要根据这个表中的一个字段Role的不同而连接不同的表,当Role=1时,查询A表中的Name字段值,当Role=2时,查询B表中的Name字段值
展开
展开全部
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。
2、之后在该界面中,点击左上角“新建查询”按钮。
3、接着在该界面中,输入根据一个字段不同值查询不同表中的一个字段的sql语句:
SELECT b.BonusPenaltyMoney FROM mySGProject a join mySGBonusPenalty b on a.SGProjectNo=b.SGProjectNo where a.SGProjectNo = '10001' UNION ALL SELECT c.ApplyMoney FROM mySGProject a join mySGProgressMoney c on a.SGProjectNo=c.SGProjectNo AND a.SGProjectNo = '10002'。
4、然后在该界面中,点击左上方“执行”按钮。
5、最后在该界面中,显示根据一个字段不同值查询不同表中的一个字段。
展开全部
select case (Role)
when 0 then (select name from tableA where dd=11)
else (select name from tableB where dd=11) end as name
from Post
就是使用 case 我没有实验过。 如果有心在网上查一下 case的用法。
备注一下。 这是在 t_sql 里面用的。
when 0 then (select name from tableA where dd=11)
else (select name from tableB where dd=11) end as name
from Post
就是使用 case 我没有实验过。 如果有心在网上查一下 case的用法。
备注一下。 这是在 t_sql 里面用的。
追问
我SQL太菜了,我写出来的跟你这个有点差别。那如果我在这里
when 0 then (select name from tableA where dd=11) ,从tableA 表中查询的不只是一个字段呢?
追答
那就不行了。 你想嘛。 一条数据对应多条。 只能用 left join
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提高一个思路,先查询出Role的值,在用if语句判断role的值是多少,相应的选择表名进行第二个查询。具体的功能就自己实现了哈。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你要一次性全查出来只能用 union all:
select post.*,A.* from post join A on 连接条件 where Post.Role=1
union all
select post.*,A.* from post join B on 连接条件 where Post.Role=2
select post.*,A.* from post join A on 连接条件 where Post.Role=1
union all
select post.*,A.* from post join B on 连接条件 where Post.Role=2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主可以用
int Role="select Role from Post......"
protected string getQuanXian(int Role)
{
string name = string.Empty;
switch (fieldType)
{
case 1:查询A表中的Name字段值; break;
case 2: 查询B表中的Name字段值;break;
default: break;
}
return name;
}
希望能帮到楼主!
int Role="select Role from Post......"
protected string getQuanXian(int Role)
{
string name = string.Empty;
switch (fieldType)
{
case 1:查询A表中的Name字段值; break;
case 2: 查询B表中的Name字段值;break;
default: break;
}
return name;
}
希望能帮到楼主!
追问
我要查询的是post表中的所有记录,所以表中的Role可能是1和2都有,这样我就得都查询A,B表了
追答
楼主可以参考
网友playsenlin:的回答好像更符合你的要求。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询