SQL join语句中的大小写

SQL join语句中的大小写,sql,sql-server,Sql,Sql Server,我必须在join中使用条件语句: select * from A inner join B on A.id = B.id select * from A inner join B on A.id = B.id 如果B.id为null或B.id=或A.id为null或A.id=则应为A.name=B.name,而不是A.id=B.id 我必须在join中使用条件语句: select * from A inner join B on A.id = B.id select * from A in

我必须在join中使用条件语句:

select * from A inner join B
on A.id = B.id
select * from A inner join B
on A.id = B.id
如果B.id为null或B.id=或A.id为null或A.id=则应为A.name=B.name,而不是A.id=B.id

我必须在join中使用条件语句:

select * from A inner join B
on A.id = B.id
select * from A inner join B
on A.id = B.id
如果B.id为null或B.id=它应该是A.id2=B.id2,而不是A.id=B.id

如果我这样做是否正确:

select *
from A inner join B on  
   (B.id is not null and B.id <> '' and A.id is not null and A.id <> '' and A.id = B.id) or 
   ((B.id is null or B.id = '' or A.id is null or A.id = '') and A.name = B.name)
 select * from A
 inner join Bid on  
    (Bid.id is not null and Bid.id <> '' and A.id is not null and A.id <> '' and A.id = Bid.id)
 inner join Bname on 
   ((Bname.id is null or Bname.id = '' or A.id is null or A.id = '') and A.name = Bname.name)

我想你会想要这样的东西:

select *
from A inner join B on  
   (B.id is not null and B.id <> '' and A.id is not null and A.id <> '' and A.id = B.id) or 
   ((B.id is null or B.id = '' or A.id is null or A.id = '') and A.name = B.name)
 select * from A
 inner join Bid on  
    (Bid.id is not null and Bid.id <> '' and A.id is not null and A.id <> '' and A.id = Bid.id)
 inner join Bname on 
   ((Bname.id is null or Bname.id = '' or A.id is null or A.id = '') and A.name = Bname.name)
也就是说,在B表上联接两次,一次是在id不为null时联接,第二次是在id为null时联接,而您是在名称列上联接。这就像case语句一样有效,因为到B表的两个连接是互斥的。

试试这个

 select * from A inner join B
 on (A.id = B.id) or 
 (A.name = B.name and (B.id is null or B.id = '' or A.id is null or A.id = ''))
试试这个代码

  DECLARE @b varchar(50)=(SELECT id FROM b)
DECLARE @a varchar(50)=(SELECT id FROM a)
if ((@b in (null , '')) and (@a in (null , '')))

BEGIN

select * from A inner join B
on
A.name = B.name 

END
else

BEGIN

select * from A inner join B
on A.id = B.id 

END

你试过了吗?它给了你想要的结果吗?我在您的SQL中没有看到任何情况……重复的请不要连续两次问同一个问题