如何防止此查询不重复这样的结果:
我的查询如下:
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
DISTINCT
在这种情况下不起作用,因为没有两行是相同的。
之所以有重复的值,是因为查询从3个表生成笛卡尔乘积。您应该提供一个条件,在该条件下表应该链接到哪里。Ex,
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 ....
您需要将联接条件添加到查询中——目前,您正在获得每个表上所有行之间的笛卡尔联接。
1)在单词select
之后添加单词distinct
或
2) 加入你的表,这样重复就不会出现在第一位
要么用独特的东西分组,要么我怀疑是之类的东西
SELECT DISTINCT c_comp_name .....
也许对你更有效。如果失败,GROUP BY i_id_user
也可以工作