如何防止此查询不重复此结果:
我的查询如下:
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
答案 0 :(得分: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 ....
答案 1 :(得分:1)
您需要为查询添加连接条件 - 目前您在每个表的所有行之间获得了一个笛卡尔连接。
答案 2 :(得分:0)
1)在单词distinct
select
或
2)加入你的牌桌,以便副本不会出现在第一位
答案 3 :(得分:0)
通过独特的东西组合或我怀疑像
SELECT DISTINCT c_comp_name .....
可能会更好地为您服务。
没有GROUP BY i_id_user
也可以工作