Ersetzen Sie wiederholt Werte mit Null in MySQL-Abfrage Antwort

Ich habe zwei Tabellen in meiner MySQL server database mit einer gemeinsamen Spalte:

Tabelle 1

+---------------------------------+ | columnA | columnB | +---------------------------------+ | 123 | lorem | | 456 | ipsum | | 456 | dolor | +---------------------------------+ 

Tabelle 2

 +---------------------------------+ | columnA | columnC | +---------------------------------+ | 123 | sit | | 123 | amet | | 123 | consectetur | | 456 | adipiscing | +---------------------------------+ 

Ich möchte alle Werte von columnB und columnC wobei columnA 123 . Die Abfrage, die ich verwende, ist:

 SELECT Table1.columnB, Table2.columnC FROM Table1 INNER JOIN Table2 ON Table1.columnA = Table2.columnA WHERE Table1.columnA = '123'; 

Hier ist das Abfrageergebnis :

 +---------------------------------+ | columnB | columnC | +---------------------------------+ | lorem | sit | | lorem | amet | | lorem | consectetur | +---------------------------------+ 

Ich bekomme die erforderlichen Ergebnisse, aber ich möchte nicht diese repetitive Werte wie in columnB in diesem Beispiel. Gibt es eine Möglichkeit zu replace (letzte zwei) redundante Werte lorem mit entweder NULL oder Whitespace? Etwas wie:

 +---------------------------------+ | columnB | columnC | +---------------------------------+ | lorem | sit | | | amet | | | consectetur | +---------------------------------+ 

Du kannst das benutzen. Ich hoffe es wird für dich arbeiten.

 ;WITH temp AS ( SELECT *, Row_number() over(partition by A.columnA order by A.columnC) as [Rn] FROM ( SELECT Table1.columnA, Table1.columnB, Table2.columnC FROM Table1 INNER JOIN Table2 ON Table1.columnA = Table2.columnA WHERE Table1.columnA = '123' ) A ) SELECT (CASE WHEN [Rn] = 1 THEN columnB ELSE NULL END) columnB ,columnC FROM temp 

Basierend auf Tien Nguyen Vorschlag.

  SELECT IF(ctr = 1, columnB, '') columnB , columnC FROM ( SELECT a.columnB , b.columnC , ROW_NUMBER() OVER ( PARTITION BY a.columnA ORDER BY b.columnA ) AS ctr FROM Table1 A INNER JOIN Table2 B ON b.columnA = a.columnA WHERE a.columnA = '123' ) tbl 

ERGEBNIS:

  columnB columnC ----------- ------------ lorem sit amet consectetur (3 row(s) affected)