我有一个数据库驱动的常见问题解答,它被组织成各个部分,我试图只获得那些与他们有问题/答案的部分的部分数据.
这是架构:
|---------------------| |----------------------| | 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子句中的子查询,或者使用内部联接中的子查询.哪个更快?
这应该这样做:
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)