php - 如何在 php mysql 中不获取重复数据
问题描述
我有一个 mysql 查询,我正在从两个表中获取详细信息,现在我想要请求待处理的用户的数据,以及来自其他数据中心的用户的数据,我想要他们拥有的 PIN 码,所以我进行了这个查询,它工作正常,但它给出我也重复了名称和中心的数据。这是我的查询
$sql = "
SELECT u.username
, u.district
, u.requests
, c.username
, c.id
FROM users u
JOIN center c
ON u.username = c.username
where u.requests = 'pending'
";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result)>0) {
while ($row = mysqli_fetch_assoc($result)) {
$name = $row['username'];
$district = $row['district'];
$center = $row['id'];?>
<tr><td><?php echo $row['username']?></td><td><?php echo $row['district']?></td><td><?php echo $row['id']?></td></tr>
<?php
}
}
?>
以下提供了当前输出的文本表示,以便更好地理解。
name center pin code
dhruv mumbai 5545454
dhruv mumbai 2618165165
我想要逗号中的 $center 变量,并且不希望它重复名称和区域变量,所以是这样的:
解决方案
在 MySQL 中,您可以使用GROUP_CONCAT
逗号分隔的值列表。将您的查询更改为
$sql = "
SELECT u.username
, u.district
, u.requests
, GROUP_CONCAT(c.id) AS id
FROM users u
JOIN center c
ON u.username = c.username
where u.requests = 'pending'
GROUP BY u.username
, u.district
, u.requests";
注意我已从列表中删除,因为它与(由于条件)具有相同的值,c.username
并且由于它具有相同的列名,它将覆盖输出数据。SELECT
u.username
JOIN
u.username
推荐阅读
- performance - 在 go (golang) 中每天触发一次滴答声 - 不是通过轮询
- java - 如何创建支持深度复制的深度嵌套数据模型?
- c++ - 您可以在变量声明/初始化中使用多个 std::tie 而不重复 std::tie 吗?
- python - 有没有办法将部分孟加拉字体从 json 转换出来?
- firebase - Firestore 可以读取 collection('users') 但不能读取 doc('users/{id}')
- matlab - bvp4c Matlab:输入参数过多错误
- assembly - 通过参数寄存器 (MIPS 24KEc) 传递给 Linux 内核的引导加载程序参数
- sql-server - 带有 SSDT 版本的 Visual Studio
- magento2 - 更改 CustomerID magento 2?
- javascript - Javascript 选项和单选价值价格计算