mysql - 不显示图片两次

标签 mysql coldfusion

我正在创建一项调查,其中随机显示员工照片,登录用户从下拉列表中选择一个姓名。我的问题是让每个登录用户的每张图片仅显示一次。这是我当前的查询,但我不确定这是否有效

<cfquery name="questions" datasource="STecMySQL">
     SELECT DISTINCT PicID
     FROM answers
 </cfquery>

PS:我正在使用 mySql 和 ColdFusion

最佳答案

在您的原始查询中,如果某个用户有多个图片 ID,您将获得该用户的重复图片。

例如,对于以下查询:

SELECT DISTINCT PicID
FROM answers

根据以下数据,您将获得 UserID 1 的重复 PicID:

PicID   UserID
----------------
1       1
3       1
4       2

您确实需要将 DISTINCT 应用于用户 ID,而不是图片 ID。由于您无法使用 SELECT 执行此操作,因此替代方法是使用 GROUP BY,假设您还有一个 UserID 字段:

SELECT PicID
FROM answers
GROUP BY UserID

这会对每个用户的结果进行分组,因此您最终只会为每个用户返回一个图片 ID。

但是,对于拥有多张图片的用户来说,PicID 的值可以是任意的。因此,如果您想明确地只返回每个用户的最新 PicID,您可以使用 MAX(),如下所示:

SELECT MAX(PicID)
FROM answers
GROUP BY UserID

关于mysql - 不显示图片两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364711/

相关文章:

mysql - 对多行求和

logging - 强制 Jboss 日志记录使用 SLF4J

coldfusion - ColdFusion 中从 Java 返回 Query 对象的正确方法是什么?

oracle - cfqueryparam 日期大于或等于

parameters - 创建一个整数以与 ColdFusion 中的参数类型整数一起使用

coldfusion - 创建链接以访问 coldfusion 中 "wwwroot"目录外的本地文件

java - 我应该以什么顺序将对象放入数据库?

mysql - MySQL 中更新表的去规范化、加权聚合

php - 如何在 PHP 中检查两个数据库的相同查询并显示结果?

mysql - 如何合并同年不同月份的行以获得总数量?