我有一个具有这种结构的sql表
id,userid, name, date1, date2
所以我有这样的争吵
1, 1, name33, 2018-10-12, 2018-10-13
2, 1, name22, 2018-10-12, 2018-10-13
3, 1, name90, 2018-10-12, 2018-10-13
4, 2, name11, 2018-10-14, 2018-10-15
5, 2, name12, 2018-10-14, 2018-10-15
6, 2, name30, 2018-10-14, 2018-10-15
我想要的是这个
userid, date1, date2
1, 2018-10-12, 2018-10-13
2, 2018-10-14, 2018-10-15
对于每个用户只有一行(所以不要显示date1和date2相同的行)
我试过了,但没用
SELECT * (DISTINCT date1,date2) FROM orders
3条答案
按热度按时间vs91vp4v1#
Select userid,distinct date1,distinct date2 from table group by userid
这更倾向于将所有具有不同日期的userid分组。lc8prwob2#
如果你真的想
SELECT *
如标题和示例查询中所述,您可以使用GROUP BY
要实现这一点,尽管需要注意,但非聚合列将显示某种任意值,如果您有ONLY_FULL_GROUP_BY
启用此选项将引发错误:使用
GROUP BY
正确地说,您应该只选择分组列或对其他列使用聚合函数。例如,这将得到DISTINCT userid, date1 and date2
值,同时显示所有name
以逗号分隔的列表形式显示每个组的值:evrscar23#
您正在使用
DISTINCT
以错误的方式;它不是一个函数。下面的查询将获得userid, date1, date2
```SELECT DISTINCT
userid,
date1,
date2
FROM orders