0

如何防止此查询不重复这样的结果:

我的查询如下:

 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

输出:

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
4

4 回答 4

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 ....
于 2013-02-08T15:33:26.960 回答
1

您需要在查询中添加连接条件 - 目前您正在获得每个表上所有行之间的笛卡尔连接。

于 2013-02-08T15:32:14.960 回答
0

1)在单词distinct后添加单词select

或者

2)加入你的桌子,这样重复就不会出现在第一个地方

于 2013-02-08T15:30:47.153 回答
0

要么按独特的东西分组,要么我怀疑像

SELECT DISTINCT c_comp_name .....

可能对你更好。失败 aGROUP BY i_id_user 也可以工作

于 2013-02-08T15:31:18.913 回答