如何在子记录列-Mysql中显示父记录Id

时间:2016-12-15 06:08:02

标签: mysql sql

我想用子记录显示我的父ID(重复记录)。这是我的表

ID|Name |Comments|
__|_____|________|_
1 |Test1|Unique  |
2 |Test2|Unique  |
3 |Test1|Unique  |
4 |Test2|Unique  |
5 |Test1|Unique  |
6 |Test3|Unique  |

预期结果:

ID|Name |Comments          |
__|_____|__________________|_
1 |Test1|Unique            |
2 |Test2|Unique            |
3 |Test1|Duplicate with: 1 |
4 |Test2|Duplicate with: 2 |
5 |Test1|Duplicate with: 1 |
6 |Test3|Unique            |

4 个答案:

答案 0 :(得分:0)

不确定这里的确切目标,但这是一个完成工作的单一查询:

mysql> select ID,tbl.Name,if(no!=ID,concat('Duplicate with: ',no),'Unique') Comments from tbl left join (select ID no,Name from tbl group by Name) T on T.Name=tbl.Name;    
+----+-------+-------------------+
| ID | Name  | Comments          |
+----+-------+-------------------+
|  1 | Test1 | Unique            | 
|  2 | Test2 | Unique            | 
|  3 | Test1 | Duplicate with: 1 | 
|  4 | Test2 | Duplicate with: 2 | 
|  5 | Test1 | Duplicate with: 1 | 
|  6 | Test3 | Unique            | 
+----+-------+-------------------+

答案 1 :(得分:0)

使用'合并'检查此Live Demo和'

时的情况

查询:

            select id
                    ,name
                    ,coalesce(      
                    ( select coalesce(case when min(id)>0 then concat('Duplicate with : ',min(id)) else null end,Comments)         
                    from Yourtable t2 where t2.name = t.name and t2.id < t.id group by Comments)        
                    ,Comments) as Comments
            from    Yourtable t
            order by id
  

输出:

enter image description here

答案 2 :(得分:-1)

嘿,你可以尝试这个查询,它会给出预期的结果。

select t1.id,t1.`name`,
  CASE  WHEN (select count(`name`) from table_name t2 where t2.`name` = t1.`name` and t2.id <= t1.id ) = 1
           then  'unique'
          else CONCAT('Duplicate with :',(select min(t3.id) from table_name t3 where t3.name = t1.`name`))
        end as 'comments'  
from table_name t1

table_name替换为您的表格。

希望这适合你。询问是否有任何疑问

答案 3 :(得分:-1)

仅使用一个子查询。

select    id
         ,name

         ,coalesce 
          (
            concat
            (
              'Duplicate with: '
              ,(select min(id) from mytable t2 where t2.name = t.name and t2.id < t.id)
            )
            ,'Unique'
          ) as Comments

from      mytable t

order by  id