嗨,在下面的选择语句中,我想为其中一列选择不同的值 b.bId 并且不起作用。声明是
select
a.sId
,distinct b.bId
from tlocal a
left outer join ts b on (b.id=a.mainId)
where
a.id=@xId;
我必须在 select 语句中选择 distinct,因为这是在存储过程中返回值。请告诉我,谢谢
嗨,在下面的选择语句中,我想为其中一列选择不同的值 b.bId 并且不起作用。声明是
select
a.sId
,distinct b.bId
from tlocal a
left outer join ts b on (b.id=a.mainId)
where
a.id=@xId;
我必须在 select 语句中选择 distinct,因为这是在存储过程中返回值。请告诉我,谢谢
尝试这个
select
a.sId,b.theId
from tlocal a
left outer join (select distinct b.ID as theID from ts) b
on (b.theid=a.mainId)
where a.id=@xId;
由于a.id
只有一个值,因此您可以对行进行区分
select distinct a.sId, b.bId
from tlocal a
left outer join ts b on (CASE WHEN ISNUMERIC(b.id) = 1 THEN convert(int, b.id) ELSE NULL END = a.mainId)
where a.id=@xId;
因为我b.ID
正在varchar
尝试转换为int
,因为我无法确定 b.ID
可能是哪种对齐方式,例如前导零或空格,无论如何拥有不同类型的 FK 都是不好的策略。
1+@siride
评论