2013-02-08 17 views
0

如何防止此查詢不重複的結果是這樣的:對外輸出的mysql數據庫中的行

我的查詢如下:

SELECT A.c_comp_name, A.i_id_user, B.c_name, C.c_map_name, D.c_temp_name 
FROM dc_cnf_costumer AS A, dc_cnf_page AS B, dc_cnf_map AS C, dc_cnf_renderer AS D 

OUTPUT:

c_comp_name  i_id_user  c_name  c_map_name  c_temp_name 
comp_1   4    Home  /map1/   template.php 
comp_2   4    Home  /map1/   template_two.php 
comp_1   4    Home  /map1/   template.php 
comp_2   4    Home  /map1/   template_two.php 
comp_1   4    Home  /map1/   template.php 
comp_2   4    Home  /map1/   template_two.php 
comp_1   4    Home  /map1/   template.php 
comp_2   4    Home  /map1/   template_two.php 
+1

好吧,您需要將每個表格中的行關聯在一起。顯示你的表格結構。 – Cfreak 2013-02-08 15:30:35

回答

2

DISTINCT將不會在這種情況下工作,因爲沒有兩行是相同的。

重複值的原因是因爲查詢從3個表產生笛卡爾積。你應該提供一個條件,表格應該鏈接到哪裏。例如,

SELECT A.c_comp_name, A.i_id_user, B.c_name, C.c_map_name, D.c_temp_name 
FROM dc_cnf_costumer AS A 
    INNER JOIN dc_cnf_page AS B 
     ON .... 
    INNER JOIN dc_cnf_map AS C 
     ON .... 
    INNER JOIN dc_cnf_renderer AS D 
     ON .... 
0

1)在單詞後加

2)加入你的表,這樣的重複不會在拳頭地方通過一些獨特的東西出現

0

任何一組或我懷疑像

SELECT DISTINCT c_comp_name ..... 

可能更適合你。 如果失敗,GROUP BY i_id_user也可以工作

1

您需要爲查詢添加連接條件 - 目前您正在每個表上的所有行之間獲得笛卡爾連接。

+0

請問downvoter發表評論解釋downvote,以便提供的答案可以改進? – 2013-02-08 16:04:15