在连接表时过滤重复项

时间:2014-10-29 23:31:37

标签: php mysql

我需要从两个表中选择数据并显示它,但我的PHP文件似乎是重复发布。我希望能够获取所有描述并将其与表1中使用的ID相关联。

我设法让它的一些工作,但它显示Jake两次的名称是他们无论如何我可以过滤掉重复项。

由于

这是我的代码

$sql = "SELECT table1.name, table2.description
        FROM table1
        INNER JOIN table2
        on table1.id = table2.customerid";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {

        echo $row['name']."<br>";
        echo $row['description']."<br>";

    }

表1

id     name     
1      james            
2      jake            
3      aaron     
4      holly

表2

id     customerid   description
1      1            hey1
2      2            hey2
3      2            hey3
4      3            hey4
5      4            hey5

1 个答案:

答案 0 :(得分:1)

您可以使用DISTINCT约束。

如果假设两行是&#34;相同&#34;只有当行具有所有列的相同值时,才会将它们分组到一个DISTINCT查询中:

SELECT DISTINCT table1.name,table2.description
FROM table1
INNER JOIN table2
ON table1.id = table2.customerid

否则,您可以使用GROUP BY语句。但随后出现了一个问题:哪个&#34;描述&#34;你会选择吗?因为杰克有两个。 MySQL实现了几个function aggregates。潜在候选人是MIN,它返回按字母顺序排序的最小值。该查询然后显示:

SELECT table1.name,MIN(table2.description)
FROM table1
INNER JOIN table2
ON table1.id = table2.customerid
GROUP BY table1.name