我在这里有一些带有长字段的表的数据库模式(类型为“text”的MS-SQL-Server,类型为“text”的Sybase)也需要检索不同的行。与长列不同
这些表看起来像
create table node (id int primary key, … a few more fields … data text);
create table ref (id int primary key, node_id int, … a few more fields);
对于“节点”一列,有可能在“REF”零个或多个行。
现在我有一个像
SELECT node.* FROM node, ref WHERE node.id = ref.node_id AND ... some more restrictions.
查询时,没有比在“参考”单行一些“NODE_ID”更该查询返回二倍体和三倍。
但我需要独特的行!
使用SELECT DISTINCT node.*
不会因为类型的列
工作“文本” :-(在Sybase有绝招,只是说“的node.id GROUP”添加到查询,瞧!你得到唯一的行返回。
是否有MS-SQL-Server中的某些类似简单的一招?
我已经使用临时表的解决方案,但是这似乎是慢了很多,也许其原因仅仅是数量较大的,因为的陈述转移到数据库中?
[不良习惯踢:使用旧样式的JOIN(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick -using-old-style-joins.aspx) – SqlZim
['text' is deprecated](http://stackoverflow.com/a/564823/2333499),已经有很多年了 – SqlZim
将该列转换为(n)varchar并在该组上进行分组。它可能会很慢,虽然... – Jeremy