SQL join语句中的大小写
我必须在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
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中没有看到任何情况……重复的请不要连续两次问同一个问题