当前位置: 首页 > 知识库问答 >
问题:

根据条件选择连接表

袁奇逸
2023-03-14

我有三张桌子

  1. 表A

我需要根据传递的参数将TableA连接到TableB或TableC。ie

select * from 
TableA A 
join (TableB on <Joining Condition> /  TableC on <joining condition> )

我尝试了以下查询

select * from 
TableA A 
join (
   case when paramB<>'' then TableB on <Joining Condition>
   case when paramC<>'' then TableC on <joining condition>
 )

但是,这是给语法错误。有人能帮忙吗?

解决方案

create table #temp (<columns>)
if paramB<>''
begin
   select * from 
   TableA A 
   join TableB on <Joining Condition>
end
else if paramB<>''
begin
  select * from 
   TableA A 
   join TableC on <Joining Condition>
end

共有3个答案

刘博文
2023-03-14

步骤1:创建一个包含需求列的临时表步骤2:如果paramB有一个值,则与TableB连接,否则与TableC连接。

create table #temp (<columns>)
if paramB<>''
begin
   select * from 
   TableA A 
   join TableB on <Joining Condition>
end
else if paramB<>''
begin
 select * from 
 TableA A 
 join TableC on <Joining Condition>
end
汪正雅
2023-03-14

你可以试试这样的方法

  select *
  from a 
  left join b ON <Joining Condition>
  left join c ON <Joining Condition>
  where paramB <> '' or paramC <> ''
郦楷
2023-03-14

您可以使用UNION ALL。

select *
from a
join TableB on <join condition>
where paramB <> ''

union all

select *
from a
join TableC on <join condition>
where paramC <> ''

请注意,表B和表C的列数和数据类型必须相同,否则会产生错误。

 类似资料:
  • 问题内容: 我有一个名为@status的变量,该变量在此select语句之前设置: 我只想选择if列,否则我想为shipwith选择null。我该如何完成? 问题答案:

  • 我有一个熊猫数据框,大约有50列和

  • 我用AnyLogic创建了一个简单的模型(见截图)。现在我想添加一个条件,选择服务块中的两个资源集中的一个。例如,以下场景应适用:如果队列中有5个以上的部件,工作人员3和工作人员4应执行服务。如果有的话

  • 如何实现以下作为JPA条件查询的查询:sql JPA标准查询基于id从3个表中选择Table 2 long id; long bpId; String project Name; JPA条件查询根据id从3个表中选择表3长id;字符串empName;字符串contactNum;

  • 常常来说,一个play的结果经常取决于一个变量的值,事件(从远端系统得到事件),或者之前任务的结果.在有些情况下,这些变量的值也会取决于其他变量. 进而,可以建立多余的组基于这些主机是否符合某些条件来操控主机,Ansible 提供了很多不同选项,来控制执行流. 让我们详细看看这些都是啥. When 语句 有时候用户有可能需要某一个主机越过某一个特定的步骤.这个过程就可以简单的像在某一个特定版本的系