我有两张桌子连在一起并返回我想要的东西:
SELECT a, b, table_one.c, d, e
, case table_three.c
when table_three.other_column_in_table_three ISNULL THEN true
ELSE false
END
from table_one INNER JOIN....
我有第三个表table_three,它也有列c。我需要一个带有标志(如布尔值)的列,该列是否出现在第三个表中。 我一直试图为此做一个案例陈述和左连接,但我无法弄清楚语法。
我知道我可以把这个案例作为SELECT之后的另一列,比如:
create table #examplework (item varchar(1), start_Loc int, end_loc int, distance int)
insert into #examplework
select 'a', 5, 10, 5
union
select 'b', 14, 11, 3
union
select 'c', 20, 1, 19
union
select 'd', 10, 13, 3
union
select 'e', 10, 5, 5
union
select 'f', 10, 6, 4
create table #worktable (Workingpath varchar(900), Current_Step varchar(1))
declare @step varchar(1) = (select top 1 item from #examplework order by distance)
declare @path varchar(900) = ''
while @step is not null
begin
insert into #worktable
select concat(@path, ',' , @step) as Workingpath, @step as CurrentStep
set @step = (select top 1 ew1.item
from #examplework ew
join #examplework ew1 on ew.item != ew1.item
where ew.item = @step
and ew1.item not in (select Current_Step from #worktable)
order by abs(ew.end_loc - ew1.start_Loc))
set @path = (select top 1 Workingpath from #worktable order by len(Workingpath) desc)
end
select top 1 * from #worktable
order by LEN(workingpath) desc
但我不确定这是否正确,我不知道如何在此查询中添加左连接。这是正确的想法,如果是的话,语法是如何工作的?
答案 0 :(得分:2)
更简单的方法
select a, b, table_one.c, d, e
, table_three.other_column is not null as flag
from table_one inner join table_two on table_one.d = table_two.c
left join table_three on -- put here the relation rules between table_three
-- and the other tables
答案 1 :(得分:1)
在MSSQL中你可以尝试:
SELECT a, b, table_one.c, d, e, ISNULL(table_three.c, true)
from table_one
INNER JOIN table_two ON table_two.c = table_one.d
LEFT JOIN table_three ON table_two.c = table_three.c