当文本字段是MS SQL Server 2000中返回字段的一部分时,如何选择不同的行?

时间:2009-04-02 15:21:12

标签: sql sql-server sql-server-2000

我有一个由数据库驱动的常见问题解答,这些常见问题解答分为几个部分,我试图仅为那些有问题/答案的部分提供部分数据。

这是架构:

|---------------------|      |----------------------|
|       Section       |      |       Quest-Ans      |
|---------------------|      |----------------------|
| PK | id(int)        |<--|  | PK     | id(int)     |
|    | title(varchar) |   |--| FK     | Sec_id(int) |
|    | desc(text)     |      |        | body(text)  |
|---------------------|      |----------------------|

当我尝试此查询时:

SELECT DISTINCT s.id, s.title, s.desc
FROM Section as s INNER JOIN Quest-Ans as q ON s.id = q.Sec_id 

我收到一条错误消息,指出DISCRETE无法应用于文本字段。我怎样才能得到我想要的数据?

如果重要,这是一个SQL2000数据库。

编辑:


好的,所以似乎有两种方法可以解决这个问题。使用EXISTS和where子句中的子查询,或者使用内部联接中的子查询。哪个更快?

4 个答案:

答案 0 :(得分:5)

这应该这样做:

SELECT s.id, s.title, s.desc
FROM Section as s 
WHERE EXISTS (SELECT * FROM Quest-Ans as q where q.Sec_id = s.id)

答案 1 :(得分:2)

select s.id, s.title, s.desc
from Section s 
inner join (select distinct sec_id from Quest-Ans) dqa on s.id = dqa.sec_id

答案 2 :(得分:0)

试一试:

SELECT s.Title, s.Desc
FROM Section as s
INNER JOIN (
  SELECT DISTINCT s.id
  FROM Section as s 
  INNER JOIN Quest-Ans as q ON s.id = q.Sec_id
) q ON s.Id = q.Id

答案 3 :(得分:0)

尝试CONVERT, DISTINCT CONVERT(VARCHAR(500),“text field”)