mysql:从表中选择*但在特定列中具有唯一值

k2fxgqgv  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(224)

我有一个具有这种结构的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
vs91vp4v

vs91vp4v1#

Select userid,distinct date1,distinct date2 from table group by userid 这更倾向于将所有具有不同日期的userid分组。

lc8prwob

lc8prwob2#

如果你真的想 SELECT * 如标题和示例查询中所述,您可以使用 GROUP BY 要实现这一点,尽管需要注意,但非聚合列将显示某种任意值,如果您有 ONLY_FULL_GROUP_BY 启用此选项将引发错误:

SELECT *
FROM `orders`
GROUP BY userid, date1, date2

使用 GROUP BY 正确地说,您应该只选择分组列或对其他列使用聚合函数。例如,这将得到 DISTINCT userid, date1 and date2 值,同时显示所有 name 以逗号分隔的列表形式显示每个组的值:

SELECT userid, date1, date2, GROUP_CONCAT(`name`) as grouped_names
FROM `orders`
GROUP BY userid, date1, date2
evrscar2

evrscar23#

您正在使用 DISTINCT 以错误的方式;它不是一个函数。下面的查询将获得 userid, date1, date2 ```
SELECT DISTINCT
userid,
date1,
date2
FROM orders

相关问题