重复行的条件

Tah*_*qui 2 mysql sql group-by

我有4列:

用户ID,开始日期(D/M/Y),类型和名称

user_id | start_date | type | name
1       | 1-01-2017  | 0    | Jack
1       | 1-01-2017  | 1    | Jack
1       | 2-01-2017  | 0    | Jack 
1       | 3-01-2017  | 0    | Jack
1       | 4-01-2017  | 0    | Jack 
1       | 5-01-2017  | 0    | Jack
Run Code Online (Sandbox Code Playgroud)

我想通过id,类型和开始日期来检索数据.但条件是,我只想要单个记录,如果日期相同且优先级是type = 1.不要重复日期.我已经尝试过Group by,但它只显示type为0的位置.

我想这样:

user_id | start_date | type | name
1       | 1-01-2017  | 1    | Jack
1       | 2-01-2017  | 0    | Jack 
1       | 3-01-2017  | 0    | Jack
1       | 4-01-2017  | 0    | Jack 
1       | 5-01-2017  | 0    | Jack
Run Code Online (Sandbox Code Playgroud)

GROUP BY结果:

user_id | start_date | type | name
1       | 1-01-2017  | 0    | Jack
1       | 2-01-2017  | 0    | Jack 
1       | 3-01-2017  | 0    | Jack
1       | 4-01-2017  | 0    | Jack 
1       | 5-01-2017  | 0    | Jack
Run Code Online (Sandbox Code Playgroud)

小智 6

我不明白你究竟在寻找什么,但是以下查询将为您提供您正在寻找的确切结果:

SELECT MAX(user_id) AS user_id, 
  start_date,
  MAX(type) AS type, 
  MAX(name) as name
FROM data AS d1  
GROUP BY start_date;
Run Code Online (Sandbox Code Playgroud)

结果:

| user_id |           start_date | type | name |
|---------|----------------------|------|------|
|       1 | 2017-01-01T00:00:00Z |    1 | Jack |
|       1 | 2017-02-01T00:00:00Z |    0 | Jack |
|       1 | 2017-03-01T00:00:00Z |    0 | Jack |
|       1 | 2017-04-01T00:00:00Z |    0 | Jack |
|       1 | 2017-05-01T00:00:00Z |    0 | Jack |
Run Code Online (Sandbox Code Playgroud)