执行JOINS时如何避免重复

时间:2015-01-16 12:19:50

标签: mysql

我正在使用PHP和MySQL创建XML Feed,它已取得了巨大的成功,但我面临的一个真正问题是,我传入Feed的项目有一个唯一的ID,它与另一个中的某些图像有关表。

XML节点由查询和循环生成。问题是我每次循环时,如果有多张图片,查询中的所有信息都会再次输出,但是会输出第二张图片。

所以我得到......

<ID>1</ID>
<URL>URL1</URL>
<ID>1</ID>
<URL>URL2</URL>

正如你可以说的那样,只要有多个图像URL,任何其他包含的字段也是重复的,因为在我的数据库中它看起来像这样。

ID URL
1  1
1  2
1  3

基本上,URL通过ID链接。

所以,如果我有像

这样的查询
SELECT * FROM TABLE1
JOIN TABLE2.parent_id = TABLE1.id 

只要有多个图片网址,我就会从表1中获取所有内容。

有没有办法从第一张表中获取所有内容,然后从第二张表中获取imgurl并将其列在ID下

喜欢这个。

ID (other fields too)
img
img
img

而不是

ID image (other fields)
ID image (other fields duplicated due to send url)

总而言之,如果我要做SELECT *我会说出姓名,姓氏,DOB但是如果我然后加入imgurl part id get ...

name
surname
DOB
URL 1

name
surname
DOB
URL 2

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

你需要决定你想要什么。但典型的解决方案是使用聚合和group_concat()

SELECT TABLE1.*, GROUP_CONCAT(TABLE2.URL)
FROM TABLE1 JOIN
     TABLE2.parent_id = TABLE1.id 
GROUP BY TABLE1.id;

url中的每条记录创建一个逗号分隔的table2 table1列表。