2016-12-15 5 views
1

Ich möchte meine Eltern-ID mit untergeordneten Datensatz (doppelten Datensatz) anzeigen. Hier ist mein TischWie Eltern-Datensatz-ID in untergeordneten Datensatzspalte anzeigen-Mysql

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

Erwartetes Ergebnis:

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   | 
+0

bitte den Titel ändern, wie Sie die ID des gleichen Namens zeigen wollen, und nicht ist es Eltern. –

+0

Sie haben eine Lösung gewählt, die mehrere Unterabfragen verwendet, wo sie mit einer durchgeführt werden kann. –

Antwort

-1

hey können Sie diese Abfrage versuchen, und es wird zu geben erwartetes Ergebnis.

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 mit Ihrem Tisch ersetzen.

Hoffe, das funktioniert für Sie. Stellen Sie sicher, dass Zweifel bestehen

+0

Dies ist nicht die optimale Lösung. Kann mit einer einzigen Unterabfrage gemacht werden. –

+0

es bedeutet nicht, dass wir es abstimmen sollten -_- –

+0

Ich kämpfe immer noch mit diesem. Als ein fairer Versuch - definitiv nicht, aber wenn es als Antwort akzeptiert wird, wenn man über die Auswirkungen auf Menschen nachdenkt, die auf diese Seite auf der Suche nach einer Antwort kommen - ich denke es sollte. –

-1

Verwenden Sie nur eine einzige Unterabfrage.

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 
0

nicht sicher, was das genaue Ziel ist hier, aber hier eine einzelne Abfrage, die den Job zu erledigen:

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   | 
+----+-------+-------------------+ 
0

prüft Diese Live Demo ‚coalesce‘ und mit ‚Fall, wenn‘

Abfrage:

  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 

Ausgang:

enter image description here

Verwandte Themen