我有以下 file_tbl
表:
id fname fdescription ftype fsize wbsid 时间戳
而且我不想选择具有相同 fname 和 wbsid 的重复行,但是应该选择相同的 fname 和不同的 wbsid。
我的查询:
$stmt = $pdo->prepare("SELECT DISTINCT(fname), wbsid from file_tbl ORDER BY wbsid ASC");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo'<hr>file-name:'.$row['fname'];
echo'<br>file-description:'.$row['fdescription'];
echo'<br>file-wbs-id:'.$row['wbsid'];
echo'<br>file-wbs-id:'.$row['timestamp'];
}
- 这将导致通知: undefined index :fdescription,时间戳在...上 线...
查询适用于 distinct,但我需要获取所有列 - 我不知道如何在不破坏查询的情况下选择所有列。 (我用 JOIN 和 GROUP BY 做了很多试验,但对我没有任何作用——例如,这个解决方案不符合我的要求: Select distinct column along with some other columns in MySQL )
注意:我通过 PHP 创建了时间戳,如果有任何兴趣,它是一个 (varchar)。
我现在的方法是将来自同一个表的两个 SELECT 查询放在一起——不幸的是我还不能完成这个。 (INNER JOIN; LEFT JOIN; 某些类型的子查询 ( http://www.w3resource.com/mysql/subqueries/index.php ) ...
编辑:现在可以使用一个可用的 sql-fiddle - 它在那里工作正常,但在我自己的 LAMP 堆栈上不行: http://sqlfiddle.com/#!9/95bad/1 或者,使用 InnoDB 和 latin1 复制粘贴原始文件: http://sqlfiddle.com/#!9/b3bce0/2
最佳答案
您正在尝试使用您未选择的列 (fdescription
)。
尝试将 fdescription
添加到您的 SELECT 子句中:
SELECT DISTINCT(fname), wbsid, fdescription
FROM file_tbl
ORDER BY wbsid ASC
如果这没有产生您想要的结果,请尝试使用分组:
SELECT fname, wbsid, fdescription
FROM file_tbl
GROUP BY fname, wbsid
ORDER BY wbsid ASC
关于mysql - 带有 DISTINCT 的 PHP7/mySQL 查询加上显示 $row 中的其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483236/