Sql显示结果为1行而不是重复

时间:2014-07-24 08:36:04

标签: php mysql pdo

你好,我有一个这样的表

Name  | Date       | Email
------+------------+------
Dima  | 2013-04-01 | email@yahoo.com
Dima  | 2013-07-03 | email@yahoo.com
Dima  | 2013-03-06 | email@yahoo.com
Andrei| 2013-01-28 | testemail@yahoo.com
Andrei| 2013-01-12 | testemail@yahoo.com

echo'<table>';
$stmt = $dbh->prepare("SELECT * FROM Users"); 
$stmt->execute();
while ($row = $stmt->fetch())
            {   
$name=$row['Name'];
$date=$row['Date'];
$email=$row['Email'];
<tr>
<td>'.$name.'</td>
<td>'.$date.'</td>
<td>'.$email.'</td>
</tr>
            }
echo'</table>';

此查询将显示数据库中的确切表格,我想要的是显示与Dima相关的所有信息,例如显示一行

Dima \ 2013-04-01,2013-07-03,2013-03-06 \ email@yahoo.com

3 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT

SELECT Name, GROUP_CONCAT(Date) Date, Email
FROM TableName
GROUP BY Name, Email

答案 1 :(得分:1)

在mysql中使用 GROUP_CONCAT ,你可以这样做,
这会通过名称电子邮件

将所有日期分组到一个列组中
select name,email,GROUP_CONCAT(date) date from users group by name, email

答案 2 :(得分:0)

GROUP_CONCAT函数将一个组中的字符串连接成一个带有各种选项的字符串。

以下说明了GROUP_CONCAT函数:

1 2 3 GROUP_CONCAT(DISTINCT表达式 ORDER BY {column_name | usinged_integer |表达} SEPARATOR sep);