将sql数据显示为1匹配

时间:2010-08-15 04:43:39

标签: sql sql-server-2008

我希望我能清楚地解释一下: 我有两个表具有以下结构:

TABLE A{id, source, url}
TABLE A2{matchid,matchsource,matchurl,country,lang}

我加入了他们:

TABLE B{id,source,url,matchid,matchsource,matchurl,country,lang}

表B是A与A2的连接,其中对于A中的每个记录,在A2中存在具有相同URL的匹配记录。现在我想显示如下数据 例如

100 google www.google.com 200 google blog  www.gblog.com USA english
                          201 google news  www.gnews.com USA english

而不是

100 google www.google.com 200 google blog  www.gblog.com USA english
100 google www.google.com 201 google news  www.gnews.com USA english

其中有数百个匹配的记录。

这可能吗?因为我需要显示表A中每条记录的第一个匹配记录

3 个答案:

答案 0 :(得分:2)

您无法在SQL中执行此操作。明智的是。

这是应在演示文稿/客户端中捕获的前3列的分组

答案 1 :(得分:1)

我建议限制您使用SQL来仅检索数据,并将该数据的显示保留到您的应用程序中。

我不怀疑您可以通过使用union allfetch first之类的东西在原始SQL中实现这种效果(这样您就可以区别对待某个部分的第一行) ,但它会给你的数据库带来不必要的压力,并且会成为一些严重的丑陋的 SQL。

换句话说,按照“而不是”位提取数据,只需使用表示层(数据库客户端代码),只显示前三列:

  • 这是第一排;或
  • 网址与上一行不同。

答案 2 :(得分:1)

我想这有可能是某种方式,但我很确定你不会那么想。猜猜你想要性能优化吗?它不会让它变得更好,我只会用你已经找到的方式。