sql根据一个字段不同值查询不同表中的一个字段

我有一张表Post,我要根据这个表中的一个字段Role的不同而连接不同的表,当Role=1时,查询A表中的Name字段值,当Role=2时,查询B表中的Name字段值... 我有一张表Post,我要根据这个表中的一个字段Role的不同而连接不同的表,当Role=1时,查询A表中的Name字段值,当Role=2时,查询B表中的Name字段值 展开
 我来答
仁昌爱娱乐
高粉答主

2020-01-13 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459810

向TA提问 私信TA
展开全部

工具/材料: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、最后在该界面中,显示根据一个字段不同值查询不同表中的一个字段。

playsenlin
推荐于2017-11-25 · TA获得超过101个赞
知道小有建树答主
回答量:438
采纳率:0%
帮助的人:238万
展开全部
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 里面用的。
追问
我SQL太菜了,我写出来的跟你这个有点差别。那如果我在这里
when 0 then (select name from tableA where dd=11) ,从tableA 表中查询的不只是一个字段呢?
追答
那就不行了。 你想嘛。 一条数据对应多条。 只能用 left join
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大笨熊
2012-10-10 · 心有多大,就能飞得有多高,飞得有多高!
大笨熊
采纳数:92 获赞数:173

向TA提问 私信TA
展开全部
提高一个思路,先查询出Role的值,在用if语句判断role的值是多少,相应的选择表名进行第二个查询。具体的功能就自己实现了哈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悠然解语
2012-10-16 · TA获得超过535个赞
知道小有建树答主
回答量:770
采纳率:33%
帮助的人:216万
展开全部
如果你要一次性全查出来只能用 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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongyz11
2012-10-10 · 超过18用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:43.8万
展开全部
楼主可以用
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:的回答好像更符合你的要求。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式