2010-08-15 50 views
0

我希望我能解釋這清楚: 我有兩個表具有以下結構:顯示SQL數據爲1個匹配

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中的每條記錄的第一個匹配的記錄A

+1

請發佈您的查詢,或者至少更新示例輸出以包含列標題 – 2010-08-15 04:50:56

+0

您想要什麼是可能的,但是像這樣的演示文稿通常不在數據庫中處理 – 2010-08-15 04:53:34

回答

2

你不能在SQL中這樣做。明智的是。

這是一個分組應該在演示文稿/客戶端中捕獲的前3列。

1

我建議限制您僅使用SQL來檢索數據,並將該數據的呈現留給您的應用程序。

我不懷疑,你將能夠使用的東西像union allfetch first實現原始SQL這種效果(讓你把一個部分的第一行不同),但它會放不必要的壓力在你的數據庫上,並認真加一些SQL

換句話說,提取數據,按你的「而不是」位,只是使用表現層(數據庫客戶端代碼),只顯示前三個欄時,可以:

  • 它的第一行;或者
  • 該URL與上一行不同。
1

我想這可能會有某種方式,但我很肯定你不會想要那樣的。猜你想要這樣做的性能優化?它不會讓它變得更好,我只是用你已經找到的方式。