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