这个查询语句怎么写?
有两个表A和B,B表实际上是把表A的Authors拆成一个名字对应一条记录。并且把Author中名字规范成汉字。
A表:
id Authors ……
-----------------------------------------------------
1 andy liu;eidson lee;andy yang ……
2 judy mu;joyce duan ……
B表
id Author FormatAuthor
---------------------------------------
1 andy 安迪
1 edison 爱迪生
1 andy 安迪
2 judy 茱迪
2 joyce 乔伊斯
如果给定“安迪”,要反过来去表A中查找原始的Authors,如果不去重,如下写:
select a.id,a.Authors from 表A a,表B b where a.ID=b.ID and b.FormatAuthor like '安迪'
那么会得到两条重复的记录如下
id Authors
----------------------------------------
1 andy liu;eidson lee;andy yang
1 andy liu;eidson lee;andy yang
当然,如果用distinct的话可以排除,不过Authors是ntext类型,不能使用distinct,而由于Authors字段有可能超出nvarchar的最大长度,所以也不能像下面这么写:
select distinct a.id,cast(a.Authors as nvarchar(8000)) from 表A a,表B b where a.ID=b.ID and b.FormatAuthor like '安迪'
还有什么其他的办法?谢谢