【发布时间】:2012-06-02 07:39:58
【问题描述】:
带有示例数据的表格“图像”:
id | user_id | album_id | sort
1 15 1 1
2 15 1 2
3 15 1 0
4 15 2 0
5 15 2 1
6 15 3 0
MySQL 查询:
SELECT id, sort, COUNT(*) FROM images WHERE user_id=15 GROUP BY album_id
查询为每个唯一组合返回一行。但是,你怎么知道它选择了哪一行的id?例如。带有sort=0 的图片是专辑的封面图片。此图像的文件路径包含id。那么,如何始终获取行的 id,sort=0?
我试过MIN(sort),它总是在sort 列中返回0,但不是该列的正确id...? ORDER BY sort 只对结果进行排序...也不是解决方案。
非常感谢任何帮助!非常感谢您!
编辑:希望这将有助于更好地理解:
查询例如给出以下结果:
id | sort | count
1 1 3
4 0 2
6 0 1
但是,怎么可能总是得到这个特定的行,sort 的值是0?例如
id | sort | count
3 0 3
4 0 2
6 0 1
【问题讨论】:
-
您真正想要实现的目标是什么?也许您可以插入几个类似的表格来显示当前和期望的结果?
-
@AndrewLeach:谢谢,请查看包含当前输出和所需输出的更新问题。希望现在更清楚...
-
其他 SQL 引擎会拒绝此查询,因为存在逻辑问题 -
sort列未包含在聚合函数或GROUP BY子句中......这只是 MySQL 是 MySQL。请参阅this question 和链接材料,以及this post。 -
@DCoder:谢谢你的链接!是的,这是有道理的。实际上,我使用
SELECT中的sort列来显示sort的输出,在我的情况下,如果它始终是0,那么SELECT无论如何都是没有意义的。但这是一个很好的观点,再次感谢!
标签: mysql sql database group-by