我有一个由数据库驱动的常见问题解答,这些常见问题解答分为几个部分,我试图仅为那些有问题/答案的部分提供部分数据。
这是架构:
|---------------------| |----------------------|
| 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子句中的子查询,或者使用内部联接中的子查询。哪个更快?
答案 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”)