Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL JOIN - Zwróć NULL dla zduplikowanych wyników w lewej tabeli

Możesz zastąpić wartości czymś takim:

select 
  case when rownum = 1 then title else null end title,
  name,
  category_id
from
(
  SELECT c.title, 
    i.name, 
    i.category_id,
    @row:=(case when @prev=title and @precat=category_id 
           then @row else 0 end) + 1 as rownum,
    @prev:=title ptitle,
    @precat:=category_id pcat
  FROM items AS i
  INNER JOIN categories AS c 
    ON c.id = i.category_id
   order by i.category_id, c.title
) src
order by category_id, rownum

Zobacz Skrzypce SQL z wersją demonstracyjną

Wynik:

|  TITLE |   NAME | CATEGORY_ID |
---------------------------------
|    red |  apple |           1 |
| (null) |    car |           1 |
| (null) |  paper |           1 |
| yellow |   lego |           2 |
| (null) | banana |           2 |
|   blue |    pen |           3 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 sposoby na wykrycie, czy ciąg pasuje do wyrażenia regularnego w MySQL

  2. Wyjątek w głównym wątku java.sql.SQLException:Odmowa dostępu dla użytkownika „@”localhost” (przy użyciu hasła:NIE)

  3. Wstaw wartość dynamicznego pola wyboru w bazie danych Mysql i pokaż wiadomość o przesłaniu danych

  4. PHP Foreach w zestawie wyników MySQLi

  5. NodeJS:Gdzie połączyć się z bazą danych w kodzie?